# Create an app card Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/extension-points/app-cards/create-an-app-card # App cards overview Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/extension-points/app-cards/overview # App cards reference Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/extension-points/app-cards/reference # Create a settings page Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/extension-points/create-a-settings-page # Create an app home page Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/extension-points/create-an-app-home-page # Fetching data for UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/fetching-data # Logging and monitoring for UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/logging-and-monitoring # UI extensions overview Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/overview # Share code between your extensions using npm workspaces Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/code-sharing-with-npm-workspaces # Migrating to v1.0 (ESLint 9) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/migrate # Linting for UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/overview # no-browser-dialogs Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-browser-dialogs # no-browser-storage Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-browser-storage # no-console Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-console # no-dom-access Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-dom-access # no-html-elements Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-html-elements # no-invalid-extension-point-imports Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-invalid-extension-point-imports # no-invalid-image-src Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-invalid-image-src # no-native-http Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-native-http # no-parent-imports Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-parent-imports # no-restricted-globals Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/linting/rules/no-restricted-globals # Mocking UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/testing/mocking # Testing UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/testing/overview # Testing utilities reference Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/tools/testing/reference # Figma Design Kit | UI extensions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/figma-design-kit # Manage UI extension layout Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/manage-ui-extension-layout # UI extension components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/overview # Button design patterns Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/patterns/buttons # Form design patterns Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/patterns/forms # Table design patterns Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/patterns/tables # Accordion Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/accordion # Alert Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/alert # AutoGrid Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/autogrid # Box Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/box # Button Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/button # ButtonRow Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/button-row # Checkbox Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/checkbox # CurrencyInput Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/currency-input # DateInput | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/date-input # DescriptionList | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/description-list # Divider Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/divider # Dropdown | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/dropdown # EmptyState | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/empty-state # Error state | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/error-state # Flex Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/flex # Form Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/form # Heading Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/heading # Icon Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/icon # Illustration Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/illustration # Image Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/image # Inline | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/inline # Input Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/input # Link Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/link # List Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/list # LoadingButton | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/loading-button # LoadingSpinner Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/loading-spinner # Modal Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/modal # MultiSelect Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/multi-select # NumberInput Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/number-input # Panel Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/panel # ProgressBar Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/progress-bar # RadioButton Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/radio-button # ScoreCircle Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/scorecircle # SearchInput | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/search-input # Select Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/select # Spacer Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/spacer # Statistics Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/statistics # StatusTag | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/status-tag # StepIndicator Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/step-indicator # StepperInput Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/stepper-input # Table | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/table # Tabs | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/tabs # Tag Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/tag # Text Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/text # TextArea Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/text-area # Tile Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/tile # TimeInput | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/time-input # Toggle Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/toggle # ToggleGroup Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/toggle-group # Tooltip | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/tooltip # UI extensions SDK reference Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-extensions-sdk # Configuration de l'application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/app-configuration Informations de référence pour les options de configuration des applications créées sur la nouvelle plateforme de développement (BÊTA) Découvrez ci-dessous des informations de référence sur les fonctionnalités des applications de la plateforme de développement, y compris des définitions de fichiers de configuration, des détails de domaines, etc. ## Structure du projet * Tous les composants du projet doivent se trouver dans le répertoire `src` spécifié dans le fichier de configuration `hsproject.json` de premier niveau. * Toutes les fonctionnalités et tous les composants de l'application doivent se trouver dans le répertoire `src/app/`. Dans ce répertoire `app/`, vous définirez des sous-répertoires pour chaque fonctionnalité que vous souhaitez que votre application prenne en charge : * Les événements d'application sont configurés dans `app-events/`. * Les objets d'application sont définis dans `app-objects/`. * Toutes les caractéristiques de la carte sont définies dans `cards/`. * Les fonctionnalités de la page Paramètres sont définies dans `settings/`. * La télémétrie est configurée dans `telemetry/`. * Les abonnements Webhook sont définis dans `webhooks/`. * Les actions de workflow personnalisées sont définies dans `workflow-actions/`. * Dans chaque sous-répertoire d'entités, vous configurerez l'entité à l'aide d'un fichier `*-hsmeta.json`. Vous pouvez préfixer le nom du fichier avec un élément significatif pour votre application (par exemple, `my-app-hsmeta.json`), tant que le fichier se termine par `-hsmeta.json`. Ces fichiers doivent se trouver à la racine de leur dossier respectif (par exemple, `app/my-app-hsmeta.json`, `cards/my-card-hsmeta.json`). L'exemple de structure de répertoire ci-dessous décrit toutes les fonctionnalités disponibles. Vous trouverez des détails sur la configuration du fichier `app-hsmeta.json` de schéma d'application de niveau supérieur dans la [section schéma d'application](#app-schema) ci-dessous. Une fois que vous êtes prêt à ajouter des fonctionnalités d'application, consultez la section [Ajout de fonctionnalités d'application](#adding-app-features). ```shell theme={null} my-project-folder/ └── hsproject.json └── src └── app/ └── app-hsmeta.json/ └── app-events/ └── my-event-type-hsmeta.json └── cards/ └── MyCard.jsx └── my-app-card-hsmeta.json └── package.json └── settings/ └── Settings.tsx └── settings-hsmeta.json └── package.json └── telemetry/ └── telemetry-hsmeta.json └── webhooks/ └── webhooks-hsmeta.json └── workflow-actions/ └── custom-action-hsmeta.json ``` > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/tree/main/projects/app-object-getting-started-template)** L'extension HubSpot Visual Studio Code permet de [vérifier le type](/docs/developer-tooling/local-development/vs-code-extension#validate-hs-meta-json-config-files) de chacune des propriétés dans vos fichiers de configuration `*-hsmeta.json`. ## Spécification des UID Le champ `uid` est un identifiant unique en interne pour votre application spécifique et doit également être globalement unique dans le projet. Toutes les [fonctionnalités de l'application](#adding-app-features) auront leur propre `uid` défini dans leurs fichiers `*-hsmeta.json` respectifs, qui doivent être différents du `uid` de niveau supérieur que vous choisissez dans le fichier `app-hsmeta.json` de votre application. ## Schéma de l'application La configuration de premier niveau de votre application est spécifiée dans un fichier de configuration `app-hsmeta.json` du répertoire `app`. ```shell theme={null} my-project-folder/ └── src └── app/ └── app-hsmeta.json/ ``` Voici les options de configuration disponibles pour `app-hsmeta.json`. ```json theme={null} { "uid": "new_developer_platform_app", "type": "app", "config": { "description": "An example to demonstrate how to build an app with developer projects.", "name": "my first app", "distribution": "marketplace", "auth": { "type": "oauth", "redirectUrls": ["http://localhost:3000/oauth-callback"], "requiredScopes": ["crm.objects.contacts.read", "crm.objects.contacts.write"], "optionalScopes": [], "conditionallyRequiredScopes": [] }, "permittedUrls": { "fetch": ["https://api.hubapi.com"], "iframe": [], "img": [] }, "support": { "supportEmail": "support@example.com", "documentationUrl": "https://example.com/docs", "supportUrl": "https://example.com/support", "supportPhone": "+18005555555" } } } ``` > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/app-object-getting-started-template/src/app/app-hsmeta.json)** Chacune des options de configuration est détaillée dans le tableau ci-dessous. Vous trouverez plus de contexte sur [la distribution de votre application](#distribution), la configuration [de l'authentification](#authentication) et la spécification [des domaines](#scopes) dans les sections sous le tableau. Les champs marqués par sont \* obligatoires. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour l'application. Doit être globalement unique au sein du projet. Peut être n'importe quelle chaîne jusqu'à 64 caractères. Les caractères peuvent être en majuscules ou en minuscules, et peuvent inclure des chiffres, des tirets bas (`_`), des tirets (`-`) et des points (`.`). | | `type`\* | Chaîne | le type de composant. Doit correspondre au nom du dossier parent (`app`). | | `description`\* | Chaîne | une description de ce que l'application fait pour l'utilisateur qui l'installe. Peut être n'importe quelle chaîne jusqu'à 8 192 caractères. | | `name`\* | Chaîne | le nom de l'application, qui s'affichera dans HubSpot. Peut être n'importe quelle chaîne jusqu'à 200 caractères. Ne doit pas commencer ou se terminer par un espace. | | `distribution`\* | Chaîne | la méthode de distribution de l'application, qui peut être définie sur l'une des suivantes : Découvrez-en davantage dans la section [Distribution](#distribution) ci-dessous. | | `auth`\* | Objet | un objet contenant les détails de la méthode d'authentification de l'application. Consultez la [section Authentification](#authentication) ci-dessous pour plus de détails. | | `permittedUrls` | Objet | un tableau contenant les URL que l'application est autorisée à appeler. Les URL doivent utiliser le schéma HTTPS et contenir une [autorité](https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL#authority), suivie d'un préfixe de chemin facultatif si nécessaire. | | `supportEmail` | Chaîne | une adresse e-mail valide que les utilisateurs peuvent contacter pour obtenir de l'aide. | | `documentationUrl` | Chaîne | l'URL externe vers laquelle les utilisateurs peuvent accéder pour obtenir de la documentation utile. Doit utiliser HTTPS. | | `supportUrl` | Chaîne | l'URL externe vers laquelle les utilisateurs peuvent accéder pour obtenir une assistance supplémentaire. Doit utiliser HTTPS. | | `supportPhone` | Chaîne | le numéro de téléphone que les utilisateurs peuvent contacter pour obtenir de l'aide. Doit commencer par un signe plus (`+`). | ### Distribution Le champ `distribution` dans le schéma de votre application vous permet de configurer la manière dont vous souhaitez distribuer votre application : * Si vous prévoyez de lister votre application sur le [marketplace des applications de HubSpot](https://ecosystem.hubspot.com/marketplace/apps), définissez le champ `distribution` sur `"marketplace"`. Un exemple de schéma d'application pour cette option se trouve [ici](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/public-app-getting-started-template/src/app/app-hsmeta.json). Si vous choisissez cette option, assurez-vous de définir dans `type` avec la propriété `auth` sur `oauth`, comme indiqué dans la section [Authentification](#authentication) ci-dessous. * Si vous souhaitez autoriser l'installation de votre application sur un ensemble spécifique de comptes ajoutés à la liste d'autorisation ou si vous souhaitez limiter l'installation à un seul compte à la fois, définissez `distribution` sur `"private"`. Veillez à définir le `type` dans la propriété `auth` en conséquence : * Si vous souhaitez installer votre application dans plusieurs comptes sur la base [d'une liste d'inclusion que vous configurez dans les paramètres de votre projet](/docs/apps/developer-platform/build-apps/manage-apps-in-hubspot#manage-authentication-for-your-app), définissez l'authentification `type` sur `oauth`. Consultez l'exemple de schéma d'application pour cette option [ici](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/private-app-oauth-getting-started-template/src/app/app-hsmeta.json). * Pour limiter l'installation à un seul compte, soit le même que celui que vous utilisez pour le développement, soit un autre compte auquel l'utilisateur installateur a accès, définissez l'authentification `type` sur `static`. Un exemple de schéma d'application pour l'authentification statique est disponible [ici](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/private-app-static-getting-started-template/src/app/app-hsmeta.json). ### Authentification L'authentification pour votre application est configurée via la propriété `auth` dans le schéma de votre application. Vous pouvez spécifier les exigences en matière de domaine de votre application, les URL de redirection et le type d'authentification. Les champs marqués par sont \* obligatoires. | Champ | Type | Description | | - | - | - | | `type`\* | Chaîne | le type d'authentification, qui peut être défini comme l'un des élèments suivants : | | `redirectUrls`\* | Tableau | une liste des URL vers lesquelles le processus OAuth est autorisé à rediriger. Chaque application doit avoir au moins une URL de redirection d'authentification et doit utiliser HTTPS. La seule exception est `http://localhost`, qui est autorisée pour les tests. | | `requiredScopes`\* | Tableau | une liste des domaines requis de votre application. Chaque application doit inclure au moins un domaine et l'utilisateur qui a procédé à l'installation doit accorder ces domaines pour installer l'application avec succès. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | | `optionalScopes` | Tableau | une liste des domaines facultatifs de votre application. Ces domaines peuvent être exclus de l'autorisation lors de l'installation si le compte ou l'utilisateur qui installe l'application ne dispose pas des autorisations appropriées. Dans ce cas, le domaine ne sera pas inclus dans le jeton d'actualisation ou le jeton d'accès qui en résulte. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | | `conditionallyRequiredScopes` | Tableau | une liste des domaines requis uniquement lorsqu'ils sont inclus dans le paramètre de requête `scope` de l'URL d'installation. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | ### Périmètres d'accès Dans le champ `auth` d'un fichier de configuration d'application, vous pouvez indiquer trois [types de domaines](/docs/apps/legacy-apps/public-apps/overview#scope-types) : les domaines requis, les domaines conditionnellement requis et les domaines facultatifs. Au minimum, votre application doit inclure le domaine `read` pour permettre aux clients d'accéder au type d'objet CRM associé. ```json theme={null} "auth": { "type" : "oauth", "redirectUrls": ["http://localhost:3000/oauth-callback"], "requiredScopes": [ "crm.objects.contacts.read", "crm.objects.contacts.write" ], "optionalScopes": [], "conditionallyRequiredScopes": [] }, ``` Pour obtenir une liste complète des domaines disponibles, consultez la [référence des domaines](/docs/apps/legacy-apps/authentication/scopes). ## Ajout de fonctionnalités de l'application Pour configurer les fonctionnalités de l'application telles que les abonnements webhook, les actions de workflow personnalisées et les cartes d'application, consultez les guides ci-dessous pour plus de détails sur l'ajout des fichiers `*-hsmeta.json` associés à votre projet : * [Créer une carte d'application](/docs/apps/developer-platform/add-features/ui-extensibility/app-cards/create-an-app-card) * [Définir des événements d'application](/docs/apps/developer-platform/add-features/app-events/overview) * [Créer des objets d'application](/docs/apps/developer-platform/add-features/app-objects/quickstart-guide-to-app-objects) * [Créer un composant de paramètres](/docs/apps/developer-platform/add-features/ui-extensibility/create-a-settings-component) * [Configurer une action de workflow personnalisée](/docs/apps/developer-platform/add-features/custom-workflow-actions) * [Configurer un abonnement au webhook](/docs/apps/developer-platform/add-features/configure-webhooks) * [Ajouter des données de télémétrie](/docs/apps/developer-platform/add-features/add-telemetry) # Make API requests using a service key (BETA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/account-service-keys # Guide de démarrage rapide pour OAuth Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/oauth/oauth-quickstart-guide Découvrez comment configurer OAuth pour votre application à l 'Travailler avec OAuth | Guide de démarrage rapide pour OAuth'; "Découvrez comment configurer OAuth pour votre application à l'aide de ce guide de démarrage rapide et de cet exemple d'application Node.js."; ## Avant de commencer Avant de commencer à utiliser OAuth avec HubSpot, vous devrez disposer : * [D'un compte de développeur](https://app.hubspot.com/signup-hubspot/developers) * [D'une application](/docs/apps/legacy-apps/public-apps/overview) associée à votre compte de développeur * D'un compte HubSpot sur lequel installer votre application (vous pouvez utiliser un compte existant ou [créer un compte de test](/docs/getting-started/account-types)). Vous devez être un [super administrateur pour](https://knowledge.hubspot.com/fr/user-management/hubspot-user-permissions-guide#super-admin) installer une application dans un compte HubSpot. ### Fonctionnement HubSpot prend en charge le [type d'octroi du code d'autorisation OAuth 2.0](https://developer.okta.com/blog/2018/04/10/oauth-authorization-code-grant-type), qui peut être divisé en quatre étapes basiques : 1. Votre application ouvre une fenêtre de navigateur pour renvoyer l'utilisateur au serveur OAuth 2.0 de HubSpot. 2. L'utilisateur examine les autorisations demandées et accorde l'accès à l'application. 3. L'utilisateur est redirigé vers l'application avec un code d'autorisation dans la chaîne de requête. 4. L'application envoie une demande au serveur OAuth 2.0 pour échanger le code d'autorisation contre un jeton d'accès. ### Dans ce guide * [Application de démarrage rapide](#quickstart-app) : une application de démonstration Node.js qui s'authentifie avec le serveur OAuth 2.0 de HubSpot * [Obtenir des jetons OAuth](#getting-oauth-tokens) : comment autoriser votre application avec les utilisateurs * [Utiliser des jetons OAuth](#using-oauth-tokens) : comment effectuer des requêtes avec un jeton * [Actualiser des jetons OAuth](#refreshing-oauth-tokens) : comment utiliser le jeton d'actualisation fourni par HubSpot Les exemples de code dans ce guide sont écrits en JavaScript (Node.js). ## Application de démarrage rapide Si vous utilisez pour la première fois l'authentification OAuth avec les API de HubSpot, il est fortement recommandé de consulter [l'application de démarrage rapide d'OAuth 2.0](https://github.com/HubSpot/oauth-quickstart-nodejs), rédigée en Node.js. Cette application est conçue pour vous aider à bien démarrer avec OAuth 2.0, en vous en montrant toutes les étapes décrites ci-dessous dans la section [Obtenir des jetons OAuth](#getting-oauth-tokens) ci-dessous. ![GitHub icon](https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/uie-icons/github.png) [Obtenir l'application de démarrage rapide](https://github.com/HubSpot/oauth-quickstart-nodejs) ## Obtenir des jetons OAuth ### 1. Créer l'URL d'autorisation et rediriger l'utilisateur vers le serveur OAuth 2.0 de HubSpot Lorsque vous envoyez un utilisateur au serveur OAuth 2.0 de HubSpot, la première étape consiste à créer l'URL d'autorisation. Cela identifiera votre application et définira les ressources (périmètres d'accès) demandées au nom de l'utilisateur. Les paramètres de requête que vous pouvez transmettre dans une URL d'autorisation sont affichés dans le tableau ci-dessous. Pour plus d'informations sur cette étape, consultez la [documentation de référence](/docs/apps/legacy-apps/authentication/working-with-oauth). Les champs marqués par \* sont obligatoires. | Paramètre | Description | Exemple | | - | - | - | | `client_id`\* | L'ID de client identifie votre application. Trouvez-le sur la page des paramètres de votre application. | `7fff1e36-2d40-4ae1-bbb1-5266d59564fb` | | `scope`\* | Les [périmètres d'accès](/docs/apps/legacy-apps/authentication/scopes#list-of-available-scopes) demandés par votre application, séparés par des espaces en format URL-encoded (`%20`). | `oauth%20crm.objects.contacts.read` | | `redirect_uri`\* | L'URL vers laquelle l'utilisateur sera redirigé après avoir autorisé votre application pour les périmètres d'accès demandés. **Pour les applications de production, `https` est obligatoire.** | `https://www.example.com/auth-callback` | | `optional_scope` | Les périmètres d'accès qui sont facultatifs pour votre application seront abandonnées si le portail HubSpot sélectionné n'a pas accès à ces produits. | `automation` | | `state` | Une valeur de chaîne unique pouvant être utilisée pour maintenir l'état de l'utilisateur lorsqu'il est redirigé vers votre application. | `WeHH_yy2irpl8UYAvv-my` | Une fois votre URL créée, commencez le processus de connexion OAuth 2.0 en y redirigeant l'utilisateur. Les blocs de code ci-dessous fournissent des exemples d'utilisation de différents types de redirection : **Utilisation d'une redirection côté serveur :** ```js theme={null} // Build the auth URL const authUrl = "https://app.hubspot.com/oauth/authorize" + `?client_id=${encodeURIComponent(CLIENT_ID)}` + `&scope=${encodeURIComponent(SCOPES)}` + `&redirect_uri=${encodeURIComponent(REDIRECT_URI)}` + `&state=${encodeURIComponent(STATE)}`; // Redirect the user return res.redirect(authUrl); ``` **Utilisation d'un lien HTML :** ```html theme={null} Install ``` **Encodage d'un état utilisateur de redirection supplémentaire :** Certaines applications peuvent avoir besoin de rediriger l'utilisateur vers différents endroits. Par exemple, une application peut souhaiter rediriger les utilisateurs vers différents sous-domaines de leur intégration (par exemple, `userA.integration.com` et `userB.integration.com`). Pour ce faire, utilisez le paramètre `state` pour encoder plus d'informations sur le statut de l'utilisateur : 1\. Générez et stockez une valeur nonce pour le paramètre de statut. 2\. Stockez le statut de l'utilisateur dans une banque de données locale en utilisant le nonce comme clé. 3\. Incluez la valeur nonce comme paramètre de statut dans l'URL d'autorisation. 4\. Lorsque l'utilisateur s'authentifie et est redirigé vers l'URL de redirection, validez le paramètre de statut et utilisez-le comme clé pour récupérer le statut de l'utilisateur stocké. 5\. À partir de là, redirigez l'utilisateur au besoin (par exemple, rediriger à nouveau vers une URL spécifique à l'utilisateur). ### 2. Demande de consentement de l'utilisateur par HubSpot HubSpot affiche une fenêtre de consentement à l'utilisateur montrant le nom de votre application et une brève description des services d'API de HubSpot auxquels elle demande l'accès. L'utilisateur peut ensuite accorder l'accès à votre application. ![Exemple de fenêtre d'invite d'installation](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/%5BExample%5D%20Install%20Screen.png) **Remarque :** l'utilisateur installant l'application doit avoir accès à tous les périmètres d'accès demandés. Autrement, l'installation échouera et il sera dirigé vers une page d'erreur. Si cette page d'erreur s'affiche, l'utilisateur devra demander à un super administrateur d'installer l'application. Votre application n'exécute aucune action à cette étape. Une fois l'accès octroyé, le serveur OAuth 2.0 de HubSpot enverra une requête à l'URI de rappel (callback) définie dans l'URL d'autorisation. ### 3. Gérer la réponse du serveur OAuth Lorsque l'utilisateur a répondu à la demande de consentement de l'étape 2, le serveur OAuth 2.0 envoie une requête `GET` à l'URI de redirection indiquée dans votre URL d'authentification. S'il n'y a aucun problème et que l'utilisateur a approuvé la demande d'accès, la requête à l'URI de redirection aura un retour avec le paramètre de requête `code` joint. Si l'utilisateur n'autorise pas l'accès, aucune requête ne sera envoyée. **Exemple :** ```js theme={null} app.get("/oauth-callback", async (req, res) => { if (req.query.code) { // Handle the received code } }); ``` ### 4. Echange du code d'autorisation contre des jetons Une fois que votre application reçoit un code d'autorisation de la part du serveur OAuth 2.0, elle peut échanger ce code contre un jeton d'accès et un jeton d'actualisation en envoyant une demande `POST` en format form-urlencoded à `https://api.hubapi.com/oauth/v1/token` avec les valeurs affichées ci-dessous. Pour plus d'informations sur cette étape, consultez la [documentation de référence](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth). | Paramètre | Description | Exemple | | - | - | - | | `grant_type` | Doit correspondre à `authorization_code` | `authorization_code` | | `client_id` | ID de client de votre application | `7fff1e36-2d40-4ae1-bbb1-5266d59564fb` | | `client_secret` | Secret de client de votre application | `7c3ce02c-0f0c-4c9f-9700-92440c9bdf2d` | | `redirect_uri` | URI de redirection lorsque l'utilisateur autorise votre application | `https://www.example.com/auth-callback` | | `code` | Le code d'autorisation reçu de la part du serveur OAuth 2.0 | `5771f587-2fe7-40e8-8784-042fb4bc2c31` | **Exemple :** ```js theme={null} const formData = { grant_type: 'authorization_code', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, redirect_uri: REDIRECT_URI, code: req.query.code }; request.post('https://api.hubapi.com/oauth/v1/token', { form: formData }, (err, data) => { // Handle the returned tokens } ``` Le corps de la réponse du jeton sera composé de données JSON comme suit : ```json theme={null} { "refresh_token": "6f18f21e-a743-4509-b7fd-1a5e632fffa1", "access_token": "CN2zlYnmLBICAQIYgZXFLyCWp1Yoy_9GMhkAgddk-zDc-H_rOad1X2s6Qv3fmG1spSY0Og0ACgJBAAADAIADAAABQhkAgddk-03q2qdkwdXbYWCoB9g3LA97OJ9I", "expires_in": 1800 } ``` Le jeton d'accès expirera après le nombre de secondes indiqué dans le champ `expires_in` de la réponse (actuellement 30 minutes). Pour plus de détails sur l'obtention d'un nouveau jeton d'accès, consultez la section [Actualiser les jetons OAuth](#refreshing-oauth-tokens) ci-dessous. ## Utilisation des jetons OAuth Une fois le flux de code d'autorisation terminé, votre application est autorisée à faire des demandes au nom de l'utilisateur. Pour cela, fournissez le jeton en tant que jeton Bearer dans l'en-tête HTTP `Authorization`. Des détails spécifiques sont disponibles dans la [documentation de référence](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth). **Exemple :** ```js theme={null} request.get( "https://api.hubapi.com/contacts/v1/lists/all/contacts/all?count=1", { headers: { Authorization: `Bearer ${ACCESS_TOKEN}`, "Content-Type": "application/json", }, }, (err, data) => { // Handle the API response } ); ``` Les jetons d'accès reflètent les périmètres d'accès demandés à l'application et pas les autorisations ou les limites de ce qu'un utilisateur peut faire dans son compte HubSpot. Par exemple, si un utilisateur dispose des autorisations pour afficher uniquement les contacts détenus, mais autorise une demande pour le périmètre d'accès `crm.objects.contacts.read`, le jeton d'accès résultant peut afficher tous les contacts du compte et pas seulement ceux détenus par l'utilisateur autorisant. ## Actualisation des jetons OAuth Les jetons d'accès OAuth expirent régulièrement. Ainsi, s'ils sont corrompus, les pirates informatiques n'y auront accès que pour une courte durée. Le cycle de vie du jeton est indiqué en secondes dans le champ `expires_in` lorsqu'un code d'autorisation est échangé contre un jeton d'accès. Votre application peut échanger le jeton d'actualisation reçu contre un nouveau jeton d'accès en envoyant une requête `POST` en format form-urlencoded à `https://api.hubapi.com/oauth/v1/token` avec les valeurs ci-dessous. Pour plus d'informations sur cette étape, consultez la [documentation de référence](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth). | Paramètre | Description | Exemple | | - | - | - | | `grant_type` | Doit correspondre à `refresh_token` | `refresh_token` | | `client_id` | ID de client de votre application | `7fff1e36-2d40-4ae1-bbb1-5266d59564fb` | | `client_secret` | Secret de client de votre application | `7c3ce02c-0f0c-4c9f-9700-92440c9bdf2d` | | `redirect_uri` | URI de redirection lorsque l'utilisateur autorise votre application | `https://www.example.com/auth-callback` | | `refresh_token` | Le jeton d'actualisation reçu lorsque l'utilisateur autorise votre application | `b9443019-30fe-4df1-a67e-3d75cbd0f726` | **Exemple :** ```js theme={null} const formData = { grant_type: 'refresh_token', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, redirect_uri: REDIRECT_URI, refresh_token: REFRESH_TOKEN }; request.post('https://api.hubapi.com/oauth/v1/token', { form: formData }, (err, data) => { // Handle the returned tokens } ``` Le corps de la réponse du jeton sera composé de données JSON comme suit : ```json theme={null} { "refresh_token": "6f18f21e-a743-4509-b7fd-1a5e632fffa1", "access_token": "CN2zlYnmLBICAQIYgZXFLyCWp1Yoy_9GMhkAgddk-zDc-H_rOad1X2s6Qv3fmG1spSY0Og0ACgJBAAADAIADAAABQhkAgddk-03q2qdkwdXbYWCoB9g3LA97OJ9I", "expires_in": 1800 } ``` Le nouveau jeton d'accès peut ensuite être utilisé pour effectuer des appels au nom de l'utilisateur. Lorsque le nouveau jeton expire, vous pouvez suivre les mêmes étapes pour en récupérer un nouveau. ## Articles connexes [Méthodes d'authentification sur HubSpot](/docs/apps/developer-platform/build-apps/authentication/overview) [Travailler avec OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth) [Gérer les jetons](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth) # Travailler avec OAuth Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth OAuth est un moyen sécurisé d "OAuth est un moyen sécurisé d'authentifier votre application. Il utilise des jetons d'autorisation plutôt qu'un mot de passe pour connecter votre application à un compte utilisateur. "; OAuth est une méthode d'authentification sécurisée qui utilise des jetons d'autorisation plutôt qu'un mot de passe pour connecter votre application à un compte utilisateur. Le lancement de l'accès OAuth est la première étape pour permettre aux utilisateurs [d'installer votre application](/docs/apps/legacy-apps/public-apps/overview#install-an-app) dans leurs comptes HubSpot. * Toute application conçue pour une installation par plusieurs comptes HubSpot ou pour un listing sur le marketplace des applications doit utiliser OAuth. * Les utilisateurs qui installent des applications dans leur compte HubSpot doivent être un [super administrateur](https://knowledge.hubspot.com/fr/user-management/hubspot-user-permissions-guide#super-admin) ou disposer d'autorisations d'[accès aux marketplace des applications](https://knowledge.hubspot.com/fr/user-management/hubspot-user-permissions-guide#settings). ## Ressources recommandées * Le [Guide de démarrage rapide pour OAuth](/docs/apps/legacy-apps/authentication/oauth-quickstart-guide) vous offrira davantage d'informations avec un exemple d'application. * Ce [tutoriel HubSpot Academy](https://app.hubspot.com/l/academy/tracks/71/593/2967) propose une présentation rapide quant à l'utilisation de OAuth avec HubSpot, y compris une répartition du flux HubSpot-OAuth et des explications sur l'actualisation d'un jeton d'accès. ## Configurer l'authentification OAuth Pour configurer l'authentification OAuth pour votre application : * Tout d'abord, [créez une application](/docs/apps/legacy-apps/public-apps/overview) dans un [compte de développeur HubSpot](/docs/getting-started/account-types#developer-accounts). Après avoir créé l'application, vous trouverez l'ID du client et le secret client pour votre application sur la page d'*authentification* de vos paramètres d'application. ![MyHubSpotApp](https://cdn2.hubspot.net/hubfs/53/MyHubSpotApp.png) * Utilisez l'ID du client et le secret client ainsi que les [paramètres de requête](#query-parameters) et les [domaines](#scopes) décrits ci-dessous pour créer votre URL d'autorisation. * Envoyez les utilisateurs qui installent votre application vers l'URL d'autorisation, où ils verront un écran qui leur permettra de sélectionner un compte et d'autoriser l'accès à votre intégration. Vous pouvez définir l'URL d'autorisation comme étant destinée à un compte HubSpot spécifique en ajoutant l'ID du compte entre `/oauth/` et `/authorize`, comme indiqué ci-dessous. Après avoir autorisé l'accès, ils seront redirigés vers votre application via un `redirect_url`, qui sera associé à un paramètre de requête de code. Vous utiliserez ce code et le secret client pour obtenir un [access\_token et un refresh\_token](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth) depuis HubSpot. * **Exemples d'URL d'autorisation** * **Tout compte :** `https://app.hubspot.com/oauth/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&scope=contacts%20automation&redirect_uri=https://www.example.com/` * **Compte spécifique (ID 123456 :** `https://app.hubspot.com/oauth/123456/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&scope=contacts%20automation&redirect_uri=https://www.example.com/` * **Exemple d'URL de redirection :** `https://example.com/?code=xxxx` * **Exemple d'erreur :** `https://www.example.com/?error=error_code&error_description=Human%20readable%20description%20of%20the%20error` * Utilisez le `access_token` pour authentifier tous les appels d'API effectués pour ce compte HubSpot. * Une fois que `access_token` expire, utilisez `refresh_token` pour générer un nouveau `access_token`. - Votre application ne s'affichera pas comme une *application connectée* dans le compte d'un utilisateur tant que vous ne générerez pas le jeton d'actualisation et le jeton d'accès initial. - Les jetons d'accès reflètent les périmètres d'accès demandés à l'application et pas les autorisations ou les limites de ce qu'un utilisateur peut faire dans son compte HubSpot. Par exemple, si un utilisateur dispose des autorisations pour afficher uniquement les contacts détenus, mais autorise une demande pour le périmètre d'accès `crm.objects.contacts.read`, le jeton d'accès résultant peut afficher tous les contacts du compte et pas seulement ceux détenus par l'utilisateur autorisant. ## Paramètres de requête Les paramètres de requêtes suivants sont obligatoires lors de la création d'une URL d'autorisation pour votre compte : | **Paramètre** | **Description** | **Mode d'emploi** | | - | - | - | | `client_id` | Un ID qui sert d'identifiant unique pour votre application. | Vous pouvez l'obtenir depuis la page des paramètres d'authentification de votre application (comme décrit ci-dessus). | | `redirect_uri` | L'URL vers laquelle seront redirigés les visiteurs après avoir accordé l'accès à votre application. | Vous pouvez également désigner cette page sur la page des paramètres d'authentification de votre application. **Remarque :** Pour des raisons de sécurité, cette URL doit utiliser `https` en production. (Lorsque vous effectuez un test avec `localhost`, `http` pouvez être utilisé.) Vous devez également utiliser un domaine, car les adresses IP ne sont pas prises en charge. | | `scope` | Un ensemble d'autorisations séparées par des espaces auxquelles votre application doit avoir accès. | Tous les domaines que vous avez vérifiés dans les paramètres d'*authentification* de votre application seront considérés comme obligatoires et vous devrez les inclure dans ce paramètre. Autrement, la page d'autorisation affichera une erreur. En outre, les utilisateurs recevront une erreur s'ils tentent d'installer votre application sur un compte qui n'a pas accès à un domaine inclus. Consultez la [documentation de référence sur les domaines](/docs/apps/legacy-apps/authentication/scopes#list-of-available-scopes) pour plus de détails sur les points de terminaison disponibles pour des domaines spécifiques. | Les paramètres suivants sont facultatifs : | **Paramètre** | **Mode d'emploi** | **Description** | | - | - | - | | `optional_scope` | Un ensemble d'autorisations séparées par des espaces pour votre application. | Les domaines facultatifs seront automatiquement supprimés de la requête d'autorisation si l'utilisateur sélectionne un compte HubSpot qui n'a pas accès à cet outil (par exemple, pour autoriser un ***domaine Content Hub** Entreprise* dans un compte gratuit HubSpot). Si vous utilisez des domaines facultatifs, vous devez vérifier le jeton d'accès ou le jeton d'actualisation pour consulter ceux qui ont été accordés. Consultez la [documentation de référence sur les domaines](/docs/apps/legacy-apps/authentication/scopes) pour plus de détails. | | `state` | Si ce paramètre est inclus dans l'URL d'autorisation, la valeur sera incluse dans un paramètre de requête d'état lorsque l'utilisateur sera dirigé vers le `redirect_uri`. | Une valeur de chaîne pouvant être utilisée pour maintenir l'état de l'utilisateur lorsqu'il est redirigé vers votre application. | ## Configurer des domaines OAuth exige que vous définissiez des domaines, ou des autorisations, pour votre application. Chaque domaine fournit un accès à un ensemble de points de terminaison d'API HubSpot et permet aux utilisateurs d'accorder à votre application l'accès à des outils spécifiques dans leur compte HubSpot. ![granular-scopes-selection](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/granular-scopes-selection.png) L'accès à des API ou points de terminaison spécifiques dépend du niveau de compte HubSpot. Si votre application peut fonctionner avec plusieurs types de comptes HubSpot, vous pouvez utiliser le paramètre `optional_scope` pour inclure des domaines de travail. Ainsi, les clients utilisant uniquement des comptes HubSpot gratuits peuvent toujours autoriser votre application, même s'ils ne peuvent pas accéder à tous ses domaines. Votre application doit vérifier et traiter tous les domaines pour lesquels elle ne reçoit pas d'autorisation. La liste complète des domaines d'application est disponible [ici](/docs/apps/legacy-apps/authentication/scopes). ## Documents associés [Méthodes d'authentification sur HubSpot](/docs/apps/developer-platform/build-apps/authentication/overview) [Guide de démarrage rapide pour OAuth](/docs/apps/legacy-apps/authentication/oauth-quickstart-guide) [Gestion des jetons](/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth) # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Demandes de validation Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/request-validation # Domaines Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/authentication/scopes # Créer une nouvelle application à l'aide du CLI (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/create-an-app # Integrate AI tools with the HubSpot MCP server (BETA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server # Gérer les applications dans HubSpot (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/manage-apps-in-hubspot Découvrez comment gérer l'authentification et d'autres paramètres pour votre application sur la nouvelle plateforme de développement Après avoir chargé votre application sur HubSpot à l'aide du [guide de démarrage rapide](/docs/apps/developer-platform/build-apps/create-an-app), en la migrant depuis une application héritée ou en exécutant manuellement la commande `hs project upload`, vous pouvez gérer votre application sur la page index des projets de votre compte HubSpot. Sur la page de détails de votre application, vous pouvez afficher son historique de création et de déploiement, confirmer les fonctionnalités actives de l'application et gérer l'authentification. ## Afficher votre application sur la page des détails du projet Pour consulter les détails de votre application : * Dans votre compte HubSpot, naviguez vers **Développent**. * Sur la page **Projets**, cliquez sur le **nom** de votre projet. Sur la page des détails du projet, passez en revue et gérez votre application : * Dans le menu latéral de gauche, vous pouvez cliquer sur **Détails** pour accéder directement à l'historique de création et de déploiement récents, ou cliquer sur une fonctionnalité de l'application pour vérifier la configuration détaillée dans son fichier `*-hsmeta.json` associé. * Cliquez sur l'onglet **Paramètres** pour activer vos paramètres de déploiement automatique ou si vous avez besoin de supprimer votre application. * Sous *Composants du projet*, cliquez sur le nom de votre application (tel que spécifié dans le [schéma de niveau supérieur](/docs/apps/developer-platform/build-apps/app-configuration#app-schema) de votre application) pour consulter le schéma d'application le plus récemment déployé, les fonctionnalités d'application actuellement configurées et gérer les paramètres d'authentification. ![Passage en revue des informations générales sur le projet et des fonctionnalités de l'application](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/top-level-project-details-for-unified-app.png) ## Gérer l'authentification pour votre application Pour afficher les informations d'identification de votre application et gérer l'authentification : * Dans l'onglet *Vue d'ensemble* de la page Détails du projet, sous *Composants du projet*, cliquez sur le nom de l'application de niveau supérieur tel que défini dans le champ `name` du [fichier de schéma de niveau supérieur](/docs/apps/developer-platform/build-apps/app-configuration#app-schema) de votre application. * Cliquez sur l'onglet **Authentification** pour afficher les informations d'identification, les domaines configurés et les URL de redirection de votre application. ![Consulter l'onglet authentification dans les paramètres de projet de l'application](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/review-auth-details-for-unified-app.png) Si la distribution de votre application est définie sur `private` dans votre [fichier de schéma d'application](/docs/apps/developer-platform/build-apps/app-configuration#app-schema), vous pouvez gérer les paramètres de la liste d'inclusion en cliquant sur l'onglet **Distribution** : * Un récapitulatif des comptes actuellement installés apparaîtra en haut de la page. Pour les applications avec une distribution `private`, vous pouvez installer votre application dans un maximum de 10 comptes HubSpot. * Pour ajouter des comptes sur la liste d'inclusion, cliquez sur **Ajouter le ou les comptes approuvés.** * Dans le panneau de droite, sous *Autres comptes de production*, consultez la liste des comptes de production auxquels votre utilisateur HubSpot a actuellement accès. * Cochez la **case** en regard des comptes que vous souhaitez ajouter à la liste d'autorisation et qui peuvent installer votre application. * Lorsque vous avez terminé, cliquez sur **Enregistrer les modifications**. ![Ajouter un compte à la liste d'inclusion dans le panneau de droite](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/approve-account-for-installation-panel.png) * Dans la liste des comptes approuvés, vous pouvez passer le curseur sur un compte pour copier son lien d'installation ou le supprimer de la liste des comptes autorisés. ![Gérer les comptes individuels inscrits sur la liste d'autorisation dans la vue Liste](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/manage-individual-allowlisted-accounts-in-app-settings.png) # Migrate an existing app to the latest version of the developer platform (2026.03) Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-to-the-latest-platform-version # Determine your migration path to 2026.03 Source: https://developers.hubspot.fr/docs/apps/developer-platform/build-apps/migrate-an-app/overview # Manage developer seats Source: https://developers.hubspot.fr/docs/apps/developer-platform/developer-seats # Developer platform Source: https://developers.hubspot.fr/docs/apps/developer-platform/overview # Types de comptes HubSpot Source: https://developers.hubspot.fr/docs/getting-started/account-types Découvrez les différents types de comptes HubSpot et ce à quoi chacun sert. Il existe plusieurs types de comptes HubSpot, chacun ayant un objectif distinct. Ci-dessous, découvrez chaque type de compte et à quoi il est destiné. ## Comptes HubSpot standards Les comptes HubSpot standards représentent le type de compte le plus courant. C'est là que vous trouverez tous les outils, fonctionnalités et paramètres inclus dans votre abonnement HubSpot. Ils peuvent être gratuits ou payants, et font office d'environnement de production. Un compte HubSpot standard a accès à tous les outils et fonctionnalités inclus dans votre abonnement. ## Comptes de développeurs d'applications Les comptes gratuits et de développeurs d'applications sont destinés à la création et à la gestion des applications, des intégrations et des comptes de test pour les développeurs. C'est également là que vous pouvez créer et gérer les listings du marketplace des applications. Cependant, les comptes de développeurs d'applications et les comptes de test associés ne sont pas connectés à un compte HubSpot standard. Ils ne peuvent pas synchroniser les données ou les ressources vers ou à partir d'un autre compte HubSpot. Les comptes de développeurs d'applications se distinguent par une bannière située en haut de n'importe quelle page, qui indique *Il s'agit d'un compte de développeur d'application*. ![](https://paper-attachments.dropbox.com/s_FE997E185BD47B083EA9B7C65FEC2822D18406AA9C2CBDB7FA3CA77217D16F19_1626814303990_App+dev+account+info+alert+option+3.png) Commencez par créer un [compte de développeur d'applications](https://developers.hubspot.com/get-started). ## Compte de test pour les développeurs Dans les [comptes de développeurs d'applications](#app-developer-accounts), vous pouvez créer des comptes de test pour les développeurs pour tester des applications et des intégrations sans affecter les données réelles de HubSpot. Les comptes de test pour les développeurs ne reflètent pas les comptes de production, mais sont plutôt des comptes HubSpot gratuits avec accès à un essai de 90 jours de nombreuses fonctionnalités des versions Entreprise des logiciels, avec les limitations suivantes : * **Marketing** **Hub :** vous pouvez envoyer des e-mails marketing uniquement aux adresses des utilisateurs que vous avez ajoutés à votre compte de test pour les développeurs. * **CMS Hub :** le nombre de pages que vous pouvez créer est soumis aux limites suivantes. * **Pages de site web** : 25 * **Outils de blog** : 1 blog comportant un maximum de 100 articles * **Pages de destination** : 25 * **Workflows** : un maximum de 100 000 fiches d'informations peuvent être inscrites chaque jour dans des workflows créés dans un compte de test pour les développeurs. Si cette limite quotidienne est atteinte : * Toute tentative d'inscription supplémentaire au-delà de cette limite sera annulée. * Les utilisateurs seront informés dans l'application qu'ils ont atteint la limite d'inscription quotidienne, ainsi que l'heure à laquelle la limite sera actualisée. Vous pouvez créer jusqu'à 10 comptes de test par compte de développeur. Ce type de compte ne peut pas synchroniser les données avec d'autres comptes, et ils ne peuvent pas être connectés à un compte HubSpot standard. Les comptes de test se distinguent par une bannière en haut de la page, qui indique le nombre de jours restants avant son expiration. ![trial-banner](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/trial-banner.png) Découvrez ci-dessous comment créer et gérer des comptes de test. ### Créer un compte de test pour les développeurs Pour créer un compte de test pour les développeurs : * Dans la barre latérale de navigation de gauche de votre compte de développeur d'applications, cliquez sur **Comptes de test**. ![left-sidebar-test-accounts](https://www.hubspot.com/hubfs/Knowledge_Base_2023_2024/left-sidebar-test-accounts.png) * Cliquez sur **Créer un compte de test d'applications** dans l'angle supérieur droit. ![developer-test-account-create](https://www.hubspot.com/hubfs/Knowledge_Base_2023_2024/developer-test-account-create.png) * Saisissez un **nom de compte**, puis cliquez sur **Créer**. Pour accéder à vos comptes de test pour les développeurs et les gérer : * Dans la barre de navigation supérieure de votre compte de développeur d'applis, cliquez sur **Test**. * Passez le curseur sur le **compte** que vous souhaitez gérer, puis sélectionnez une action : * Pour supprimer le compte, cliquez sur **Supprimer**. * Pour copier l'ID du compte, le renouveler ou le renommer, cliquez sur le menu déroulant **Plus**. ![developer-account-test-accounts](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/developer-account-test-accounts.png) ### Renouveler un compte de test pour les développeurs Les comptes de test pour les développeurs expire au bout de 90 jours si aucun appel d'API n'est effectué sur le compte. Vous pouvez soit renouveler manuellement le compte à partir de la page *Test* dans HubSpot, soit effectuer un appel d'API vers le compte. Gardez à l'esprit ce qui suit si vous souhaitez renouveler le compte via un appel d'API : * Cela s'applique uniquement aux demandes d'API effectuées à l'aide des [jetons OAuth](/docs/api-reference/auth-oauth-v1/guide) générés par une application dans le même compte de développeur que le compte de test que vous souhaitez renouveler. * Les renouvellements doivent être effectués au maximum 30 jours avant la date d'expiration du compte de test. ## Comptes sandbox Les comptes de sandbox vous permettent de tester vos modifications sans affecter votre compte standard. Découvrez-en davantage sur les différents types de comptes de sandbox dans les sections ci-dessous. ### Comptes sandbox standards Si vous disposez d'un abonnement *Entreprise*, vous pouvez créer des comptes de sandbox qui font office d'environnements sûrs et sécurisés où vous pouvez tester de nouveaux workflows, intégrations, pages web et autres changements importants sans avoir d'impact sur votre compte standard. Ces environnements de test copient la structure de votre compte standard. Ces comptes peuvent être identifiés par une bannière jaune en haut de la page qui inclut le libellé : *Vous vous trouvez sur \[nom de la sandbox], qui est un compte d'environnement de test standard*. La bannière comprend également un lien vers votre compte de production pour y passer plus facilement. ![standard-sandbox-banner](https://www.hubspot.com/hubfs/Knowledge_Base_2023/standard-sandbox-banner.png) Découvrez-en davantage sur les comptes d'environnement de test standard dans la [base de connaissances de HubSpot](https://knowledge.hubspot.com/account/set-up-a-hubspot-standard-sandbox-account). ### Comptes sandbox CMS Les environnements de test CMS et les comptes gratuits sont destinés à la création et au test de modifications de sites web sans impacter votre compte standard ni le site web en ligne. Tout comme les comptes développeurs d'applications, les comptes sandbox CMS ne sont pas connectés à votre compte HubSpot standard. Vous pouvez [créer gratuitement un compte d'environnement de test CMS](https://offers.hubspot.com/free-cms-developer-sandbox). Les sandbox CMS n'ont pas de bannière, mais elles n'ont accès qu'aux outils gratuits de HubSpot et au ***CMS Hub*** *Entreprise* (et ne peuvent pas se connecter à un domaine). ### Comptes sandbox de développement (BÊTA) Si vous disposez d'un abonnement ***Sales Hub*** ou ***Service Hub*** *Entreprise*, vous pouvez créer un compte sandbox de développement via l'ILC à des fins de développement local. Vous pouvez accéder aux comptes sandbox des développeurs en [optant pour la version bêta des outils de développement CRM](https://knowledge.hubspot.com/account/opt-your-hubspot-account-into-a-beta-feature) dans votre compte HubSpot standard. Les sandbox de développement peuvent être identifiées par une bannière jaune en haut de la page qui inclut le libellé : *Vous vous trouvez sur \[nom de la sandbox], qui est un compte d'environnement de test de développement*. Découvrez-en davantage sur la création et l'utilisation des [comptes sandbox de développement](/docs/developer-tooling/overview#create-and-use-development-sandboxes). ![development-sandboxes-banner](https://www.hubspot.com/hubfs/Knowledge_Base_2023/development-sandboxes-banner.png) ## Comptes fournisseurs du marketplace Les comptes fournisseurs du marketplace sont destinés à la création et à la gestion des [listes et des transactions du marketplace des modèles](/docs/cms/marketplace/template-guidelines). Pour commencer à vendre sur le marketplace de modèles, [créez un compte fournisseur de marketplace de modèles](https://app.hubspot.com/signup-hubspot/asset-provider). Si vous êtes un [partenaire HubSpot](https://www.hubspot.com/partners), vous disposez déjà de la fonctionnalité de fournisseur de marketplace dans votre compte partenaire. Un compte fournisseur de marketplace se distingue par un élément **Marketplace** **des ressources** dans le menu de navigation supérieur. ![template-marketplace-acct](https://www.hubspot.com/hubfs/Knowledge_Base_2023/template-marketplace-acct.png) # Vue d'ensemble développeur Source: https://developers.hubspot.fr/docs/getting-started/developer-overview # Premiers pas avec les modules Source: https://developers.hubspot.fr/docs/getting-started/quickstart Créez un composant réutilisable dans vos pages et modèles, appelé module personnalisé. Vous en découvrirez davantage sur les champs et leur utilisation avec HubL. 'Créez un composant réutilisable dans vos pages et modèles, appelé module personnalisé. Vous en découvrirez davantage sur les champs et leur utilisation avec HubL.'; '[https://cdn2.hubspot.net/hubfs/327485/Module%20Editor-1-1.png](https://cdn2.hubspot.net/hubfs/327485/Module%20Editor-1-1.png)'; Dans ce tutoriel, vous utiliserez le thème boilerplate de CMS Hub afin de découvrir comment créer un module et l'utiliser dans des modèles et des pages dans le cadre d'un thème. À la fin du tutoriel, vous aurez créé un module de témoignage client comprenant un champ d'image, un champ de texte et un champ de texte enrichi. S'il s'agit de votre première expérience avec le développement CMS Hub, nous vous recommandons de consulter la page suivante : **Démarrage rapide du développement CMS Hub** Si vous souhaitez développer un module à utiliser dans un thème que vous souhaitez répertorier sur le marketplace des ressources HubSpot, consultez les [exigences du marketplace des ressources concernant les modules](https://developers.hubspot.com/docs). ## Avant de commencer Avant de commencer ce tutoriel : * Créez un [compte sandbox de développeur CMS Hub](https://offers.hubspot.com/free-cms-developer-sandbox). Vous pouvez utiliser votre compte existant, mais le compte sandbox vous permettra de développer sans impacter les éléments de votre compte principal. * Installez [Node.js](https://nodejs.org/en/), qui active les outils de développement local de HubSpot. Les versions 10 ou ultérieures sont prises en charge. Si vous souhaitez prendre de l'avance, vous pouvez directement prévisualiser les [fichiers de projet](https://github.com/HubSpot/cms-modules-getting-started/tree/3b9159334f8c6204c7d2d34d8945d71b6ba402ea) terminés. Comme le code du thème de boilerplate CMS peut changer au fil du temps, seuls les fichiers les plus importants que les développeurs devront créer ou modifier au cours du tutoriel sont inclus. Ces fichiers comprennent : 1. **Testimonial.module :** le dossier contenant les fichiers qui composent le module personnalisé que vous allez créer dans le cadre du tutoriel. 2. **homepage.html :** le modèle que vous allez modifier pour inclure le module personnalisé. 3. **images :** le dossier contenant les photos de profil que vous utiliserez dans le module. ## Configurer votre environnement de développement local Au cours de ce tutoriel, vous développerez le module localement. Pour interagir avec HubSpot dans votre interface de ligne de commande, vous devrez installer l'[ILC HubSpot](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) et la configurer pour accéder à votre compte. * Dans le terminal, exécutez la commande suivante pour installer l'ILC globalement. Pour installer l'ILC uniquement dans votre répertoire actuel, exécutez `npm install @hubspot/cli`. ```shell theme={null} npm install -g @hubspot/cli ``` * Dans le répertoire où vous stockerez vos fichiers de thème, authentifiez votre compte HubSpot afin de pouvoir interagir avec lui via l'ILC. ```shell theme={null} hs account auth ``` * Appuyez sur **Entrée** pour ouvrir la page de la clé d'accès personnelle dans votre navigateur. * Sélectionnez le **compte** sur lequel vous souhaitez effectuer le déploiement, puis cliquez sur **Continuer avec ce compte**. Vous accéderez alors à la page de la clé d'accès personnelle du compte. * À côté de *Clé d'accès personnelle*, cliquez sur **Afficher** pour révéler votre clé. Cliquez ensuite sur **Copier** pour la copier dans votre presse-papiers. * Collez la clé dans le terminal, puis appuyez sur **Entrée**. * Saisissez un **nom** unique pour le compte. Ce nom sera vu et utilisé uniquement par vous lors de l'exécution des commandes. Pour connecter les outils de développement locaux à votre compte, appuyez sur la touche **Entrée**. Vous verrez alors un message de succès confirmant que le fichier `~/.hscli/config.yml` a été créé. ## Ajouter le boilerplate CMS à votre compte * Exécutez la commande ci-dessous pour créer un nouveau thème nommé `my-theme`. Un dossier de thème intitulé `my-theme` sera alors créé dans votre répertoire de travail, contenant les éléments du boilerplate. ```shell theme={null} hs create website-theme my-theme ``` * Téléchargez les fichiers dans votre compte. ```shell theme={null} hs upload ``` | Paramètre | Description | | - | - | | | Le chemin d'accès au fichier local, relatif à votre répertoire de travail actuel. | | | Le chemin de destination dans votre compte HubSpot. Il peut s'agir d'un nouveau dossier. | Par exemple, `hs upload my-theme my-new-theme` téléchargerait le dossier `my-theme` de votre ordinateur vers un dossier `my-new-theme` dans HubSpot. Par défaut, HubSpot va télécharger sur le compte par défaut dans votre fichier `hubspot.config,yml`. Cependant, vous pouvez également spécifier un compte en incluant l'indicateur `--account=` dans la commande. Par exemple : `hs upload --portal=mainProd`. Découvrez-en davantage dans la [référence des commandes d'ILC](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). ## Créer un module dans HubSpot Avec le boilerplate de CMS dans votre environnement local, vous allez maintenant créer un nouveau module pour le thème. Aux fins de ce tutoriel, vous créerez le module dans HubSpot, puis le transférerez dans le thème à l'aide de l'ILC. Cependant, vous pouvez également créer des modules à partir de zéro localement à l'aide de la commande [hs create module](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). * Connectez-vous à votre compte HubSpot, puis accédez au gestionnaire de conception en accédant à **Marketing > Fichiers et modèles > Outils de conception**. * Dans la barre latérale gauche du gestionnaire de conception, ouvrez le **dossier du thème** que vous venez de télécharger. * Dans le dossier du thème, ouvrez le **dossier des modules**. * En haut à gauche, cliquez sur **Fichier > Nouveau fichier** pour créer un nouveau module dans ce dossier. * Dans la boîte de dialogue, cliquez sur le **menu déroulant**, puis sélectionnez **Module** et **Suivant**. ![new-module-dropdown-menu0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/new-module-dropdown-menu0.png) * Sélectionnez la case à cocher **Pages** pour que le module soit disponible pour les sites web et les pages de destination. * Nommez le module **Témoignage**, puis cliquez sur **Créer**. ### Ajouter des champs au module Vous allez ensuite ajouter trois champs au module : * Un champ de texte pour stocker le nom du client qui donne son témoignage. * Un champ d'image qui stockera la photo de profil du client. * Un champ de texte enrichi qui stockera le témoignage du client. #### Ajouter le champ de texte pour le nom du client * Dans la barre latérale droite, cliquez sur le menu déroulant **Ajouter un champ**, puis sélectionnez **Texte**. ![testimonial-module-add-field](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/testimonial-module-add-field.png) * Dans la barre latérale de droite, cliquez sur l'**icône Crayon** dans l'angle supérieur droit pour nommer le champ. Pour ce tutoriel, saisissez le **nom du client**. Vous verrez alors le nom de la variable HubL changer pour **customer\_name**. * Définissez le **texte par défaut** sur **Sally**. ![Exemple de champ de texte](https://cdn2.hubspot.net/hubfs/53/Text-Field-3.png) * Dans la barre latérale droite, cliquez sur l'icône du **fil d'Ariane** pour revenir au menu principal du module. ![module-breadcrumb-icon0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/module-breadcrumb-icon0.png) #### Ajouter le champ d'image pour la photo de profil du client * Ajoutez un autre champ en utilisant la même méthode, en sélectionnant cette fois le type de champ **Image**. * Intitulez le champ **Image de profil**, puis définissez le **nom de la variable HubL** sur **profile\_pic**. * Sous **Image par défaut**, sélectionnez la photo de profil fournie pour Sally dans le dossier d'**images** des [fichiers de projet terminés](https://github.com/HubSpot/cms-modules-getting-started/tree/3b9159334f8c6204c7d2d34d8945d71b6ba402ea/images). * Définissez le **texte alternatif** sur **Image de profil de Sally**. ![get-started-with-modules-profile-pic](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/getting-started-with-modules-profile-pic.png) #### Ajouter le champ de texte enrichi pour le témoignage de Sally * Ajoutez un autre champ en utilisant la même méthode, en sélectionnant cette fois le type de champ **Texte enrichi**. * Intitulez le champ de texte enrichi **Témoignage**. * Cliquez sur la zone **Texte enrichi par défaut**, puis saisissez "Je n'ai eu que de merveilleuses expériences avec cette entreprise." ![Exemple de champ de texte enrichi](https://cdn2.hubspot.net/hubfs/53/Rich-Text-Field-5--.png) Jusqu'à présent, vous avez ajouté des données dans plusieurs champs de module. À ce stade, le module ne contient pas de code HTML pour restituer ces données. Dans l'éditeur de module, cela se traduit par l'état vide de la section `module.html`. ![module-html-empty0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/module-html-empty0.png) Ensuite, vous ajouterez HubL à `module.html` pour afficher les données des champs. ### Ajouter HubL pour afficher les données des champs Pour afficher les données des champs précédemment créés, ajoutez le HubL suivant au panneau `module.html` : ```hubl theme={null} {{module.customer_name}} {{module.profile_pic.alt}} {{module.testimonial}} ``` Les jetons HubL ci-dessus utilisent la notation par points pour accéder aux données de chaque champ. Dans ce cas, étant donné que nous voulons extraire des données des champs de module, chaque jeton commence par `module`, suivi du nom de la variable HubL du champ. Vous pouvez utiliser la notation par points pour accéder davantage aux propriétés spécifiques d'un champ, que vous pouvez voir dans les jetons `profile_pic` à la ligne 3 ci-dessus. * Une fois le HubL ajouté à votre module, vous pouvez cliquer sur **Aperçu** en haut à droite pour voir à quoi ressemble le module jusqu'à présent. ![design-manager-previewer](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/design-manager-previewer.png) * Puis, dans l'angle supérieur droit, cliquez sur **Publier les modifications**. Après avoir créé et publié le module dans HubSpot, vous allez maintenant utiliser l'ILC pour transférer le module dans votre environnement local afin de pouvoir en consulter le contenu et y apporter d'autres modifications. ## Consulter et modifier le module localement Pour afficher le module localement, vous devez tout d'abord le transférer dans votre thème local. * Dans le terminal, exécutez la commande : `hs fetch ` : * `` représente le chemin du fichier du module dans HubSpot. Pour obtenir le chemin du fichier, vous pouvez effectuer un clic droit sur le module dans la barre latérale gauche du gestionnaire de conception, puis sélectionner **Copier le chemin**. ![design-manager-copy-path0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/design-manager-copy-path0.png) * `` représente le chemin d'accès au répertoire local où se trouve votre thème. S'il est omis, il s'agira par défaut de votre répertoire de travail actuel. Par exemple, si vous êtes déjà dans le répertoire de travail, votre commande fetch peut ressembler à ce qui suit : ```shell theme={null} hs fetch my-theme/modules/testimonial.module ``` ### Ouvrir le dossier du module dans votre environnement local Dans votre éditeur de code préféré, accédez au dossier du module que vous venez de télécharger depuis votre compte HubSpot. Dans le dossier de votre module, vous verrez cinq fichiers différents : | Paramètre | Description | | - | - | | `fields.json` | Un objet JSON qui contient les champs de votre module. | | `meta.json` | Un objet JSON qui contient des méta-informations sur votre module. | | `module.css` | Le fichier CSS qui donne un style à votre module. | | `module.html` | Le HTML et le HubL de votre module. | | `module.js` | Le JavaScript de votre module. | Vous trouverez des informations plus détaillées dans la documentation sur la [structure des fichiers du module](https://developers.hubspot.com/docs), notamment en ce qui concerne les fichiers `fields.json` et `meta.json`. Ce tutoriel se concentre sur les fichiers `fields.json`, `module.css` et `module.html` ainsi que sur la manière dont ils sont générés, téléchargés et chargés dans l'éditeur de modules du gestionnaire de conception. ### Consulter le fichier fields.json du module Ouvrez le module du fichier `fields.json`. À l'exception de certains numéros `id`, de l'attribut `src` du champ d'image et, éventuellement, de l'ordre des champs, le fichier doit contenir un objet JSON similaire à ce qui suit : ```json theme={null} //fields.json [ { "label": "Customer Name", "name": "customer_name", "id": "2a025cd5-7357-007f-ae2f-25ace762588e", "type": "text", "required": true, "locked": false, "validation_regex": "", "allow_new_line": false, "show_emoji_picker": false, "default": "Sally" }, { "label": "Profile Picture", "name": "profile_pic", "id": "7877fb84-eb8a-d2c7-d939-77e6e9557d8f", "type": "image", "required": false, "locked": false, "responsive": true, "resizable": true, "default": { "src": "https://cdn2.hubspotqa.net/hubfs/101140939/profile-pic-sally.svg", "alt": "Sally Profile Picture", "width": 100, "height": 100, "max_width": 100, "max_height": 100 } }, { "label": "Testimonial", "name": "testimonial", "id": "c5524ece-1ab5-f92d-a5de-e2bf53199dfa", "type": "richtext", "required": false, "locked": false, "default": "

I’ve had nothing but wonderful experiences with this company.

" } ] ``` Les valeurs des champs suivants correspondront aux valeurs que vous avez ajoutées à l'étape 3 : * `name` : nom du champ * `label` : libellé du champ * `default` : valeur par défaut du champ ### Consulter le fichier module.html du module Le fichier `module.html` doit contenir le HubL et le HTML que vous avez saisis précédemment dans l'éditeur de module HubL + HTML. Pour rendre ce code plus intéressant et adapté pour le style CSS, copiez et collez le code suivant dans le fichier : ```hubl theme={null}

{{ module.customer_name }}

{{ {{ module.testimonial }}
``` En saisissant votre HTML comme ci-dessus, vous utilisez la [structure de classe BEM](https://css-tricks.com/bem-101/) conformément au [guide de style](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/STYLEGUIDE.md#css-code-formatting) du thème de boilerplate CMS Hub. ### Consulter le fichier module.css du module Le fichier `module.css` doit être vide à ce stade. Pour ajouter du style, copiez et collez le code suivant dans le fichier : ```css theme={null} .testimonial { text-align: center; } .testimonial__header { font-weight: bold; } .testimonial__picture { display: block; margin: auto; } ``` Après avoir ajouté le code, enregistrez le fichier. ## Transférer vos modifications locales vers votre compte HubSpot Après avoir enregistré vos modifications locales, transférez-les vers votre compte HubSpot. * Accédez à votre terminal et assurez-vous que vous êtes dans le bon répertoire. * Exécutez la commande watch pour transférer les modifications vers HubSpot lors de la sauvegarde : `hs watch `. ```shell theme={null} hs watch my-theme my-theme ``` ## Prévisualiser vos modifications locales dans HubSpot * Dans votre compte HubSpot, accédez à **Marketing** > **Fichiers et modèles** > **Outils de conception**. * Dans la barre latérale gauche, accédez au **thème** que vous avez créé, puis ouvrez le dossier des **modules** et sélectionnez le module **Témoignage**. * Le module étant ouvert, vous devriez maintenant voir vos modifications dans les volets `module.html` et `module.css`. * Dans l'angle supérieur droit, cliquez sur **Aperçu**. Un nouvel onglet s'ouvrira pour afficher l'aperçu du module. ![Exemple d'aperçu de module](https://cdn2.hubspot.net/hubfs/53/Module-Preview-7.png) Pour récapituler ce tutoriel jusqu'ici, vous avez : * Créé un module dans HubSpot * Transféré ce module dans votre environnement local * Apporté des modifications au HTML + HubL et aux CSS en utilisant vos outils de développement locaux Dans la prochaine partie de ce tutoriel, vous découvrirez comment utiliser le module dans un modèle. ## Ajouter le module à un modèle Pour cette partie du tutoriel, vous travaillerez principalement avec les dossiers `modules` et `templates` dans vos fichiers de thème locaux. ![theme-folder-structure-getting-started-with-modules0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/theme-folder-structure-getting-started-with-modules0.png) Dans leur définition la plus élémentaire, les modules sont des zones modifiables des modèles et des pages HubSpot. Vous pouvez insérer des modules dans des modèles dans HubSpot en utilisant le gestionnaire de conception. Ici, vous allez utiliser HubL pour ajouter le module à un modèle dans votre environnement local. * Dans votre éditeur de code, ouvrez le dossier `templates`, puis ouvrez le fichier `home.html`. * Dans le fichier `home.html`, accédez au dernier élément `dnd_section`, qui débute vers la ligne 28. C'est dans cette section que vous ajouterez votre nouveau module. ![home-html-add-testimonial-module-to-section0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/home-html-add-testimonial-module-to-section0.png) * Dans `dnd_section`, au-dessus des autres éléments `dnd_modules`, copiez et collez la balise de module HubL suivante : ```hubl theme={null} {% dnd_module path= “../modules/Testimonial.module”, offset=0, width=4 %} {% end_dnd_module %} ``` Cette balise HubL référence votre nouveau module par son chemin de fichier relatif. Pour que le module s'adapte uniformément aux deux autres modules de `dnd_section`, il attribue également des valeurs `width` et `offset` : * Le CMS de HubSpot utilise un [système de grille à 12 colonnes](https://developers.hubspot.com/docs#columns). Par conséquent, pour espacer ce module uniformément avec les deux autres, vous devrez mettre à jour chaque module dans `dnd_section` pour avoir une largeur de `4`. * Ensuite, le premier `dnd_module` dans le groupe (`testimonial`) aura un décalage de `0` pour le positionner en premier. * Le second `dnd_module` (`linked_image`) aura un décalage de `4` pour le positionner en second. * Le troisième `dnd_module` (`rich_text`) aura un décalage de `8` pour le positionner en troisième. Après avoir défini `offset` et `width` pour chaque `dnd_module`, votre code se présentera comme suit : ```hubl theme={null} {% dnd_section background_color="#f8fafc", vertical_alignment="MIDDLE" %} {% dnd_module path= “../modules/Testimonial.module”, offset=0, width=4 %} {% end_dnd_module %} {% dnd_module path="@hubspot/linked_image", img={ "alt": "Stock placeholder image with grayscale geometrical mountain landscape", "loading": "lazy", "max_height": 451, "max_width": 605, "size_type": "auto_custom_max", "src": get_asset_url("../images/grayscale-mountain.png") }, offset=4, width=4 %} {% end_dnd_module %} {% dnd_module path="@hubspot/rich_text", html="

Provide more details here.

Use text and images to tell your company’s story. Explain what makes your product or service extraordinary.

" offset=8, width=4 %} {% end_dnd_module %} {% end_dnd_section %} ``` Lorsque vous ajoutez un module à une zone de glisser-déposer, la balise du module ne nécessite pas de nom unique. Toutefois, lorsque vous ajoutez un module à un fichier HTML en dehors des zones de glisser-déposer, vous devez attribuer un nom unique au module. Vous utiliserez également une syntaxe légèrement différente, comme suit : `{% module "testimonial_one" path="../modules/Testimonial.module" %}` Découvrez-en davantage sur l'[utilisation des modules dans les modèles](/docs/cms/reference/modules/using-modules-in-templates). ## Prévisualiser vos modifications dans HubSpot * Si vous n'avez pas exécuté la commande `watch` pour suivre votre travail automatiquement, exécutez à nouveau `hs watch `. Assurez-vous que cette commande continue d'être exécutée pendant que vous effectuez les étapes suivantes. * Dans votre compte HubSpot, ouvrez le gestionnaire de conception (**Marketing** > **Fichiers et modèles** > **Outils de conception**). * Dans la barre latérale gauche du gestionnaire de conception, sélectionnez le fichier **home.html**. * En haut à droite, cliquez sur **Aperçu**, puis sélectionnez **Aperçu en ligne avec options d'affichage** pour ouvrir l'aperçu du modèle dans une nouvelle fenêtre. ![Exemple d'aperçu en ligne](https://cdn2.hubspot.net/hubfs/53/Live-Preview-10.png) * Dans le nouvel onglet, affichez l'aperçu du modèle, qui doit contenir votre module de témoignage nouvellement ajouté. ![testimonial-module-added-to-theme](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/testimonial-module-added-to-theme.png) ## Personnaliser le module dans le modèle localement Pour rendre le modèle de la page d'accueil plus intéressant : * Retournez dans votre éditeur de code, puis ouvrez le fichier `home.html`. * Ajoutez les paramètres suivants à la balise du module de témoignage : ```hubl theme={null} {% dnd_module path='../modules/Testimonial.module', customer_name = "Mary", profile_pic = { src: "{{ get_asset_url('../images/profile-pic-mary.svg') }}", alt: "Mary Profile Picture" }, testimonial = "Wow, what a product! I can't wait to recommend this to all my family and friends!", offset=0, width=4 %} {% end_dnd_module %} ``` Les paramètres ci-dessus remplacent les valeurs par défaut que vous avez initialement attribuées à ces trois champs. Chaque paramètre utilise le nom de variable HubL que vous avez précédemment attribué à chaque champ : * `customer_name` **:** ce paramètre transmet le nom `Mary` au champ du nom du client, remplaçant la valeur initiale `Sally`. * `profile_pic` **:** ce paramètre est un objet qui contient deux propriétés. * La propriété `src` utilise la fonction HubL `get_asset_url` pour récupérer l'URL de la photo de profil. Notez que le chemin du fichier de l'image est relatif à votre répertoire de travail. Vous devez d'abord ajouter cette image au dossier `images` dans vos fichiers de thème locaux. Vous pouvez trouver l'image dans le dossier `images` des [fichiers de projet](https://github.com/HubSpot/cms-modules-getting-started/tree/3b9159334f8c6204c7d2d34d8945d71b6ba402ea/images) terminés. * La propriété `alt` permet d'attribuer le texte alternatif de l'image. * `testimonial` **:** ce paramètre permet de transmettre un nouveau texte dans le champ de témoignage. Pour le champ de texte enrichi, vous pouvez également utiliser la syntaxe de bloc HubL pour écrire un grand bloc de HTML ou de texte : ```hubl theme={null} {% dnd_module path='../modules/Testimonial.module', customer_name = "Mary", profile_pic = { src: "{{ get_asset_url('../images/profile-pic-mary.svg') }}", alt: "Mary Profile Picture" }, offset=0, width=4 %} {% module_attribute "testimonial" %} Wow, what a product! I can't wait to recommend this to all my family and friends! {% end_module_attribute %} {% end_dnd_module %} ``` Découvrez-en davantage sur la [syntaxe des blocs de module](/docs/cms/reference/modules/using-modules-in-templates). Si vous avez conservé la commande `watch` en cours d'exécution dans votre terminal, enregistrez vos modifications pour les envoyer à HubSpot. Vous pouvez ensuite retourner dans le gestionnaire de conception pour prévisualiser le modèle. ![Module de Mary dans le modèle](https://cdn2.hubspot.net/hubfs/53/Mary-Module-in-Template-12.png) ## Ajouter deux autres modules de témoignage au modèle Dans cette étape, vous allez ajouter deux autres modules de témoignage au modèle en suivant les mêmes étapes que précédemment : * Accédez à votre éditeur de code, puis ouvrez le fichier `home.html`. * Sous le module de témoignage que vous avez ajouté précédemment, ajoutez une autre instance du module en copiant et collant le code de ce module. Dans le nouveau module de témoignage, spécifiez les détails suivants en suivant les mêmes étapes que ci-dessus : * Le nom du client est `Ollie`. * Le témoignage d'Ollie est le suivant : `I can't believe that I ever conducted business without the use of this product!` * Pour la photo d'Ollie, ajoutez le chemin d'accès relatif du fichier dans le dossier `images`. Vous pouvez obtenir l'image elle-même à partir des [fichiers de projet](https://github.com/HubSpot/cms-modules-getting-started/tree/3b9159334f8c6204c7d2d34d8945d71b6ba402ea) terminés. Puis, donnez à l'image d'Ollie l'attribut `alt` de `Ollie Profile Picture`. * Pour conserver l'espacement, définissez `offset` sur `4` et `width` sur `4`. * Sous le deuxième module de témoignage, ajoutez-en un troisième avec les détails suivants : * Le nom du client est `Erin`. * Le témoignage d'Erin est le suivant : `My business has nearly tripled since I began to use this product! Don't wait, start now!` * Pour la photo d'Erin, ajoutez le chemin d'accès relatif du fichier dans le dossier `images`. Puis, donnez à l'image d'Erin l'attribut `alt` de `Erin Profile Picture`. * Pour conserver l'espacement, définissez `offset` sur `8` et `width` sur `4`. * Enregistrez vos modifications. Si vous avez conservé la commande `watch` en cours d'exécution dans votre terminal, vous pouvez revenir au gestionnaire de conception pour prévisualiser les modifications apportées au modèle. L'aperçu du modèle doit maintenant contenir les trois modules de témoignage. ![testimonial-modules-added-to-theme](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/testimonial-modules-added-to-theme.png) Pour terminer, vous préparerez le thème à utiliser dans une page en direct en modifiant le fichier `theme.json`. ## Modifier le nom du thème Si vous souhaitez modifier le nom par défaut du thème, vous pouvez le faire en configurant les champs `name` et `label` du fichier `theme.json`. ```json theme={null} // example theme.json { "name": "my_first_theme", "label": "My first theme" } ``` Après avoir ajouté ce code, enregistrez vos modifications afin que la commande `watch` envoie vos modifications à HubSpot. ## Étapes suivantes Maintenant que vous avez créé un module personnalisé, que vous l'avez ajouté au modèle `home.html` et que vous avez éventuellement personnalisé le nom du thème, vous êtes prêt à créer une page en direct à partir du thème. Si vous souhaitez suivre un tutoriel similaire qui se concentre sur les thèmes, consultez le tutoriel [Premiers pas avec les thèmes](/docs/cms/start-building/building-blocks/themes/getting-started). Autrement, découvrez-en davantage sur la [création et la personnalisation de pages](https://knowledge.hubspot.com/fr/website-and-landing-pages/create-and-customize-pages) dans la base de connaissances de HubSpot. Si vous souhaitez en savoir plus sur les modules, consultez les guides de module suivants : * [Configurer un module](/docs/cms/reference/modules/configuration) * [Utilisation de modules dans les modèles](/docs/cms/reference/modules/using-modules-in-templates) * [Modules par défaut](/docs/cms/reference/modules/default-modules) ## Autres tutoriels * [Premiers pas avec les thèmes](/docs/cms/start-building/building-blocks/themes/getting-started) * [Démarrer avec les fonctions sans serveur](https://developers.hubspot.com/docs) * [Créer un workflow de développement efficace](/docs/cms/start-building/introduction/developer-environment/creating-an-efficient-development-workflow) * [Premiers pas avec l'accessibilité](/docs/cms/best-practices/improve-existing-sites/accessibility) * [Utiliser les infrastructures JavaScript sur CMS Hub](/docs/cms/start-building/introduction/developer-environment/js-frameworks) * [Comment utiliser des composants web dans des modules personnalisés](https://developers.hubspot.com/blog/use-web-components-in-hubspot-cms-development) * [Comment construire un module basé sur un composant web de bloc de code](https://developers.hubspot.com/blog/how-to-build-a-code-block-web-component) # Documentation des développeurs HubSpot Source: https://developers.hubspot.fr/docs/index Redéfinissez la productivité grâce au code Rechercher ou demander... Bienvenue dans la documentation pour les développeurs de HubSpot. Créez un CRM personnalisé et des expériences de site web basées sur les données dans HubSpot. Suivez les étapes ci-dessous pour commencer, ou lancez-vous directement dans un guide de démarrage rapide adapté à votre configuration. > **Premiers pas** > > 1. Installer l'ILC HubSpot globalement > 2. Autoriser votre compte HubSpot > 3. Commencer à créer ```bash npm theme={null} npm install -g @hubspot/cli && hs init ``` ```bash yarn theme={null} yarn global add @hubspot/cli && hs init ``` ```bash pnpm theme={null} pnpm add -g @hubspot/cli && hs init ``` ```bash ruby theme={null} gem install hubspot-cli && hs init ``` ```bash Build your first project theme={null} hs get-started ``` ![Transférer des données depuis et vers HubSpot](https://mintlify-assets.b-cdn.net/hubspot/datain-light.svg) ## Transférer des données depuis et vers HubSpot Migrez facilement des données depuis et vers HubSpot à l'aide d'API et d'outils pour les données modernes. ![Visualiser des données dans HubSpot](https://mintlify-assets.b-cdn.net/hubspot/visualize-light.svg) ## Visualiser des données dans HubSpot Ajoutez des éléments d'interface utilisateur personnalisés, comme des cartes CRM, pour afficher vos données directement dans HubSpot. ![Agir sur les données dans HubSpot](https://mintlify-assets.b-cdn.net/hubspot/act-light.svg) ## Agir sur les données dans HubSpot Automatisez les actions, déclenchez des workflows et personnalisez la logique HubSpot pour l'adapter à vos activités. ## Ressources > **[Premiers pas](https://developers.hubspot.com/docs/getting-started/overview)** > > Créez votre première application ou modèle en quelques minutes > **[Référence d'API](/docs/api-reference/overview)** > > Intégrez grâce aux API de HubSpot > **[Journal des modifications](https://developers.hubspot.com/changelog)** > > Découvrez les nouveaux changements et les nouvelles versions > **[Présentation de la plateforme](https://developers.hubspot.com/docs/getting-started/overview)** > > Découvrez la plateforme et les outils de développement de HubSpot > **[HubSpot Academy](https://academy.hubspot.com/)** > > Explorez les formations pédagogiques > **[Exemples d'applications](https://github.com/HubSpot/ui-extensions-examples/tree/main)** > > Consultez des exemples de code pour la personnalisation du CRM # Ajouter une télémétrie (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/add-telemetry Découvrez comment configurer la télémétrie . Vous pouvez configurer la télémétrie pour votre application, qui agit comme un récepteur de journal pour transférer les données de journal à un fournisseur d'observabilité externe. Actuellement, seuls [Honeycomb](https://www.honeycomb.io/) et [Sentry](https://sentry.io/) sont pris en charge en tant que fournisseurs tiers. ## Créer et configurer des fichiers de composants de télémétrie Dans le répertoire `app/` de votre projet, créez un répertoire de `telemetry/`, puis ajoutez-y un fichier de configuration `telemetry-hsmeta.json`. ```shell theme={null} └── src/ └── app/ └── telemetry/ └── telemetry-hsmeta.json ``` Modifiez le fichier `telemetry-hsmeta.json` pour configurer votre fournisseur, enregistrer les paramètres de niveau, etc. Un fichier d'exemple est fourni ci-dessous, ainsi qu'un tableau détaillant chacun des champs disponibles. > [!WARNING] > > **Remarque** : par défaut, tous les types et niveaux de journal seront synchronisés avec votre fournisseur via les champs `logTypes` et `logLevels`, ce qui peut entraîner l'envoi d'un très grand volume de données. Il est fortement recommandé de commencer par configurer uniquement les types de journaux qui vous intéressent et de définir les niveaux de journal pour filtrer uniquement les erreurs. ### telemetry-hsmeta.json ```json theme={null} { "uid": "telemetry", "type": "telemetry", "config": { "providerType": "SENTRY", "datasetName": "my-app-telemetry", "logTypes": ["API_CALL", "EXTENSION_LOG", "EXTENSION_RENDER", "DATA_FETCH"], "logLevels": ["ERROR", "WARN", "INFO"] } } ``` | Champ | Type | Description | | - | - | - | | `uid` | Chaîne | un identifiant unique pour votre configuration de télémétrie. Cette valeur peut être définie sur n'importe quelle valeur, mais elle apparaîtra dans les paramètres de votre projet sur votre compte. Elle doit donc être différente des autres valeurs `uid` des autres composants de l'application. | | `type` | Chaîne | le type de composant, qui devrait être `telemetry` dans ce cas. | | `config` | Objet | un objet contenant les détails de configuration. Consultez les sous-propriétés répertoriées dans les lignes ci-dessous. | | `providerType` | Chaîne | le nom de votre fournisseur de télémétrie tiers. Actuellement, seuls `SENTRY` et `HONEYCOMB` sont pris en charge. | | `datasetName` | Chaîne | un libellé qui sera associé à vos données de journal, si votre fournisseur prend en charge cette option. | | `logTypes` | Tableau | une liste des types de journaux envoyée à votre fournisseur externe. Par défaut, tous les logs sont propagés vers votre fournisseur. Les types de journaux disponibles incluent : `["CRM_LEGACY_CARD", "CRM_EXTENSIBILITY_CARD", "WEBHOOKS", "API_CALL", "APP_SETTINGS", "SERVERLESS_EXECUTION", "PROXY_EXECUTION", "EXTENSION_RENDER", "EXTENSION_LOG", "SERVERLESS_GATEWAY_EXECUTION"]`. | | `logLevels` | Tableau | une liste des niveaux de gravité selon lesquels filtrer les journaux. Les niveaux de journaux pris en charge sont : `["ERROR", "WARNING", "INFO"]` | ## Ajouter une authentification externe en tant que secret via l'ILC En plus de créer le fichier de configuration `telemetry-hsmeta.json` ci-dessus, vous devrez également ajouter un secret qui correspond à la clé d'authentification de votre fournisseur : * Si vous utilisez Sentry, vous ajouterez le DSN (Data Source Name) en tant que secret. * Si vous utilisez Honeycomb, vous ajouterez une clé d'API en tant que secret. ### Localiser un DSN Sentry Si vous utilisez Sentry, suivez les étapes ci-dessous pour obtenir votre DSN : * Connectez-vous à votre [compte Sentry](https://sentry.io/auth/login/). * Accéder aux paramètres de votre projet. * Dans la section *Clés client* ou *DSN*, vous trouverez un DSN unique pour votre projet. Elle doit ressembler à ce qui suit : ``` https://sentry-key@sentry-identifier.ingest.us.sentry.io/project-id ``` ### Trouver une clé d'API Honeycomb Si vous utilisez Honeycomb comme fournisseur d'observabilité externe, une clé d'API est utilisée pour authentifier et transférer les données. Cette clé d'API est associée à votre compte et à votre projet Honeycomb spécifiques. Pour générer une clé d'API Honeycomb : * Connectez-vous à votre [compte Honeycomb](https://ui.honeycomb.io/login). * Accéder aux paramètres de votre projet. * Recherchez la section *Clés d'API* et générez une nouvelle clé. * Copiez la clé d'API générée. ### Ajouter un secret en utilisant l'ILC HubSpot Une fois que vous avez obtenu votre DSN Sentry ou votre clé d'API Honeycomb, exécutez la commande suivante pour ajouter la valeur en tant que secret. Lorsque le nom du secret vous est demandé, vous devez utiliser `TELEMETRY_SECRET` pour que les données de journal soient synchronisées correctement. ```shell theme={null} hs app secrets add ``` # Créer un outil d'agent Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/agent-tools/create-an-agent-tool Suivez ce tutoriel pour créer un outil d'agent, qui est une action de workflow personnalisée adaptée aux agents IA. Dans HubSpot, vous pouvez créer un agent IA qui effectuera diverses actions en fonction de vos instructions. Par exemple, vous pouvez créer un agent pour vous envoyer tous les matins un e-mail contenant des notes sur les réunions à venir du jour. Pour exécuter leurs tâches, les agents s'appuient sur les outils des agents. Les outils sont comme des fonctions dans un langage de programmation : ils ont des paramètres que vous transmettez à l'outil, et l'outil renvoie une sortie. Les outils dans HubSpot sont similaires au concept des outils dans MCP (Model Context Protocol). Un outil d'agent regroupera les appels API, les étapes LLM et d'autres éléments de contexte à l'appui pour permettre à l'IA de faire le travail. Les outils sont conçus pour effectuer des tâches spécifiques et bien définies, telles que l'interrogation d'une base de données, l'exécution d'opérations CRUD (Créer, Lecture, Mettre à jour, Supprimer) ou l'utilisation de l'IA générative pour résumer du contenu. En termes d'onboarding, un outil agent est une version améliorée d'une action de workflow personnalisée, que vous créerez à l'aide du cadre de projet développeur de HubSpot. Ce tutoriel vous guidera sur la création d'un outil d'agent. ## Conditions préalables Avant de commencer, vous devrez : * Installez la dernière version bêta de l'ILC HubSpot en exécutant `npm i -g @hubspot/cli@next`. * Créez un [compte de test de développeur](/docs/getting-started/account-types#developer-test-accounts) à partir du compte de développeur qui s'est inscrit à la bêta. * Authentifiez le compte de test auprès de l'ILC en exécutant la [commande `hs auth`](/docs/developer-tooling/local-development/hubspot-cli/reference#authenticate-an-account) dans votre terminal. **1. Créer un projet** Si vous commencez de zéro, vous devrez d'abord créer un nouveau projet. Si vous souhaitez utiliser un projet existant, vous pouvez également [passer à la section suivante](#2.-add-an-agent-tool-to-the-project) (version `2025.2` du projet requise). Pour créer un nouveau projet : 1. Dans le terminal, exécutez la commande ci-dessous pour créer un nouveau projet à partir de l'un des modèles de démarrage rapide boilerplate. ```shell theme={null} hs project create --platform-version 2025.2 ``` 2. Suivez les invites du terminal pour configurer le nom et l'emplacement du projet, puis sélectionnez un modèle. Plusieurs options de modèles sont proposées en fonction de la façon dont vous prévoyez de [distribuer](/docs/apps/developer-platform/build-apps/app-configuration#distribution) votre application. Pour les besoins de ce tutoriel, sélectionnez le modèle **Lancer un projet avec une application marketplace**. 3. Le modèle de projet sera alors téléchargé dans votre répertoire de travail, où vous pourrez consulter son contenu. Ce modèle de projet comprend tous les fichiers nécessaires pour charger un projet avec une application qui comprend quelques exemples de fonctionnalités d'application. Ces fonctionnalités incluent une [carte d'application](/docs/apps/developer-platform/add-features/ui-extensibility/app-cards/create-an-app-card) boilerplate, un [webhook](/docs/apps/developer-platform/add-features/configure-webhooks) et une [action de workflow](/docs/apps/developer-platform/add-features/custom-workflow-actions). Pour les besoins de ce tutoriel, ces composants ne sont pas nécessaires, mais il peut être utile de les passer en revue si vous souhaitez les tester plus tard. **2. Ajouter un outil d'agent au projet** En arrière-plan, les outils d'agent sont des actions de workflow personnalisées configurées spécifiquement pour le contexte de l'agent. Pour qu'un agent puisse exécuter l'outil, de la même manière qu'un workflow exécuterait une action, vous devez permettre à l'action d'être disponible pour les agents utilisant le champ `supportedClients`. * Dans le répertoire `workflow-actions`, créez un nouveau fichier JSON pour la configuration de l'outil. Le fichier peut porter n'importe quel nom, mais doit se terminer par `-hsmeta.json` (par exemple, `my-agent-tool-hsmeta.json`). * Construisez la configuration de l'action à l'aide de la [documentation de référence sur les outils d'agent](/docs/apps/developer-platform/add-features/agent-tools/reference). Assurez-vous d'inclure le client `AGENTS` dans le champ `supportedClients`, comme indiqué dans l'exemple de code ci-dessous. ```json theme={null} { "uid": "agent_tool_action", "type": "workflow-action", "config": { "actionUrl": "https://example.com", "toolType": "GET_DATA", "llmDescription": "A description that helps the LLM understand what this tool does.", "isPublished": false, "supportedClients": [ { "client": "AGENTS" }, { "client": "WORKFLOWS" } ], "inputFields": [ { "typeDefinition": { "name": "message", "type": "string", "fieldType": "textarea" }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": false } ], "labels": { "en": { "actionName": "My custom agent tool", "actionDescription": "A description of the tool.", "actionCardContent": "Send a notification", "inputFieldLabels": { "message": "Notification Message" }, "inputFieldDescriptions": { "message": "Enter the message to be sent in the notification" } } }, "objectTypes": ["CONTACT"] } } ``` Lorsque vous créez votre outil, gardez à l'esprit ce qui suit : * Lors du développement actif, vous ne devez pas définir vos champs de saisie comme obligatoires, car les champs obligatoires ne peuvent pas être mis à jour ou supprimés une fois chargés. * Les demandes adressées à des points de terminaison publics seront faites en tant que demandes `POST`. Lorsque vous êtes prêt à télécharger sur votre compte de test, enregistrez vos fichiers, puis lancez `hs project upload`. Si vous avez commencé avec un nouveau projet, vous serez invité à appuyer sur `y` pour créer le projet dans le compte. > [!WARNING] > > ### Remarque : > > HubSpot développe toujours activement des fonctionnalités pour permettre de tester les outils des agents. Cette page sera mise à jour avec de plus amples instructions dès que ces fonctionnalités de test seront disponibles. # Présentation des agents et des outils Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/agent-tools/overview Découvrez comment créer des outils pour personnaliser l'expérience des agents HubSpot. Dans HubSpot, vous pouvez créer un agent IA qui effectuera diverses actions en fonction de vos instructions. Par exemple, vous pouvez créer un agent pour vous envoyer tous les matins un e-mail contenant des notes sur les réunions à venir du jour. Pour exécuter leurs tâches, les agents s'appuient sur les outils des agents. Les outils sont comme des fonctions dans un langage de programmation : ils ont des paramètres que vous transmettez à l'outil, et l'outil renvoie une sortie. Les outils dans HubSpot sont similaires au concept des outils dans MCP (Model Context Protocol). Un outil d'agent regroupera les appels API, les étapes LLM et d'autres éléments de contexte à l'appui pour permettre à l'IA de faire le travail. Les outils sont conçus pour effectuer des tâches spécifiques et bien définies, telles que l'interrogation d'une base de données, l'exécution d'opérations CRUD (Créer, Lecture, Mettre à jour, Supprimer) ou l'utilisation de l'IA générative pour résumer du contenu. En termes d'onboarding, un outil agent est une version améliorée d'une action de workflow personnalisée, que vous créerez à l'aide du cadre de projet développeur de HubSpot. > [!NOTE] > > Notez les limites suivantes pour le moment de la version bêta : > > * L'agent n'a pas accès aux données du CRM, sauf s'il dispose explicitement des outils nécessaires pour obtenir ces données. > * L'agent ne peut pas demander d'informations à l'utilisateur après son appel s'il ne dispose pas d'informations suffisantes pour terminer la tâche. ## Outils de construction Pour créer un outil, consultez le [guide de création d'un agent](/docs/apps/developer-platform/add-features/agent-tools/create-an-agent-tool) ainsi que la [documentation de référence](/docs/apps/developer-platform/add-features/agent-tools/reference), qui comprend des informations sur les options de configuration, les meilleures pratiques et la validation des demandes. > [!WARNING] > > ### Remarque : > > HubSpot développe toujours activement des fonctionnalités pour permettre de tester les outils des agents. Cette page sera mise à jour avec de plus amples instructions dès que ces fonctionnalités de test seront disponibles. # Référence des outils d'agent (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/agent-tools/reference Découvrez comment créer des outils d'agent, qui sont des actions de workflow personnalisées pouvant être utilisées par les agents IA. Les agents HubSpot sont des assistants basés sur l'IA avec lesquels les utilisateurs peuvent discuter pour effectuer des tâches. Chaque agent comprend une série d'actions, appelées outils, qu'il utilisera selon les instructions de l'utilisateur. En tant que développeur, vous pouvez créer des outils d'agent personnalisés pour effectuer des tâches spécifiques et bien définies en fonction du cas d'utilisation prévu de l'agent. En arrière-plan, les outils sont des actions de workflow personnalisées configurées pour être disponibles dans le contexte de l'agent. Les outils peuvent être utilisés par plusieurs agents et peuvent être configurés pour fonctionner à la fois avec des agents et des workflows. À un niveau élevé, la création d'un outil d'agent consiste à : * Ajout d'un composant d'action de workflow à une application en incluant une `workflow-actions` [répertoire dans le projet](#project-setup), ainsi qu'un fichier de configuration `*-hsmeta.json` pour l'outil. Chaque outil et chaque action de workflow que vous créez doit avoir son propre fichier de configuration `*-hsmeta.json`. * [Configuration de l'action](#agent-tool-definition) pour qu'elle soit disponible dans les agents IA via le champ `supportedClients`. Lorsque vous créez vos outils, vous devez également garder à l'esprit un ensemble de [bonnes pratiques](#best-practices) pour garantir des performances de meilleure qualité. ## Configuration du projet Pour créer des outils, votre `hsproject.json` doit avoir sa `platformVersion` définie sur `2025.2`. Cette version est définie automatiquement sur tous les [modèles de démarrage rapide](/docs/apps/developer-platform/build-apps/create-an-app), mais devra être mise à jour manuellement pour les projets avec des versions antérieures. Notez que, lors de la mise à niveau d'un projet vers une version `2025.2`, vous devrez respecter les nouvelles normes de fichier de configuration `*-hsmeta.json` pour la [configuration de votre application](/docs/apps/developer-platform/build-apps/app-configuration) et ses fonctionnalités. Les outils d'agent et les actions de workflow personnalisées sont tous deux contenus dans le répertoire de l'application `workflow-actions`. ```shell theme={null} ├──src │ ├── hsproject.json │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── workflow-actions/ │ │ └── agent-tool-action-hsmeta.json └── ``` ## Définition de l'outil agent Le fichier de configuration de vos outils doit être placé dans le répertoire `workflow-actions` pour fonctionner. Les options de configuration pour les outils d'agent sont les mêmes que pour les [actions de workflow personnalisées](/docs/apps/developer-platform/add-features/custom-workflow-actions#custom-workflow-action-definition), avec la condition supplémentaire que le champ `supportedClients` doit inclure le client `AGENTS`. ```json theme={null} { "uid": "agent_tool_action", "type": "workflow-action", "config": { "actionUrl": "https://example.com", "toolType": "GET_DATA", "llmDescription": "A description that helps the LLM understand what this tool does.", "isPublished": false, "supportedClients": [ { "client": "AGENTS" }, { "client": "WORKFLOWS" } ], "inputFields": [ { "typeDefinition": { "name": "message", "type": "string", "fieldType": "textarea" }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": true }, { "typeDefinition": { "name": "priority", "type": "enumeration", "fieldType": "select", "options": [ { "value": "high", "label": "High Priority" }, { "value": "normal", "label": "Normal Priority" }, { "value": "low", "label": "Low Priority" } ] }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": true } ], "labels": { "en": { "actionName": "My custom agent tool", "actionDescription": "A description of the tool.", "actionCardContent": "Send {{priority}} priority notification", "inputFieldLabels": { "message": "Notification Message", "priority": "Priority Level" }, "inputFieldDescriptions": { "message": "Enter the message to be sent in the notification", "priority": "Select the priority level for this notification" } } }, "objectTypes": ["CONTACT"] } } ``` Les champs marqués par \* sont requis | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour l'action de workflow. | | `type`\* | Chaîne | le type de composant, qui devrait être `workflow-action` dans ce cas. | | `actionUrl`\* | Chaîne | l'URL à laquelle l'outil fera une requête `POST`. L'URL doit être un point de terminaison accessible au public et ne peut pas être une fonction sans serveur définie dans le projet de développement. | | `toolType`\* | String | la catégorie de fonctionnalité de l'outil. Peut être l'un des éléments suivants :
  • `GET_DATA` : récupère des informations depuis HubSpot ou des sources externes.
  • `GENERATE` : génère du contenu, des résumés, des analyses ou des suggestions basés sur les données saisies.
  • `TAKE_ACTION` : effectue des actions CRM, telles que la création de notes ou l'attribution de tâches aux propriétaires.
| | `llmDescription`\* | Chaîne | une description qui aide le modèle de langage exhaustif à comprendre les fonctionnalités de l'outil. | | `isPublished` | Booléen | détermine si la définition est visible dans les comptes qui ont installé votre application. Par défaut, cette valeur est définie sur `false`. | | `supportedClients`\* | Tableau | un tableau d'objets spécifiant les clients pris en charge par l'action de workflow personnalisée. Chaque objet du tableau doit avoir une clé `client` avec une valeur de chaîne indiquant le type de client. Les valeurs comprennent :
  • `WORKFLOWS` : active l'action pour les workflows.
  • `AGENTS` : active l'action pour les agents.
| | `inputFields` | Tableau | les valeurs pour les saisies que l'utilisateur a renseignées. Découvrez-en davantage sur [les meilleures pratiques relatives à la quantité de champ](#be-mindful-of-the-number-of-input-fields). | | `typeDefinition.name` | Chaîne | le nom ou la clé du champ de saisie. | | `typeDefinition.type` | Chaîne | le type de valeur que le champ de saisie doit attendre. | | `typeDefinition.fieldType` | Chaîne | le type de champ qui apparaît aux utilisateurs qui créent le workflow. | | `typeDefinition.options` | Tableau | pour les types d'énumération, ce champ fournit une liste d'options. Chaque option doit comporter une `value`, en fonction de l'entrée fournie par l'utilisateur, et un `label`, qui identifie l'option dans l'outil workflows. | | `inputFieldDependencies` | Tableau | une liste de règles qui définissent les relations entre deux entrées ou plus, en fonction de leur `dependencyType`. Découvrez-en davantage dans l'exemple [ici](/docs/api-reference/automation-actions-v4-v4/guide#example-%233). | | `labels.`\* | Chaîne | clé de paramètres régionaux qui correspond à la définition des paramètres régionaux. Un libellé anglais (`en`) et sa définition doivent être définis au minimum. | | `labels..inputFieldDescriptions` | Objet | un objet qui définit les détails des entrées de votre action. Dans l'exemple ci-dessus, cet objet comprend les champs `message` et `priority`. | | `labels..inputFieldOptionLabels` | Objet | un objet requis si votre ou vos champs de saisie disposent d'options. Fournit une carte des libellés d'options de champs de saisie, saisis par la valeur ou le libellé de l'option. | | `labels..outputFieldLabels` | Objet | un objet qui mappe les définitions de `outputFields` vers les libellés correspondants qui apparaissent dans l'outil workflows. | | `labels..actionName`\* | Chaîne | le nom de l'action tel qu'il apparaît dans le panneau *Sélectionner une action* de l'éditeur de workflows. | | `labels..appDisplayName`\* | Chaîne | le nom de la section du panneau *Sélectionner une action* où toutes les actions de l'application apparaissent. Si `appDisplayName` est défini pour plusieurs actions, la première trouvée sera utilisée. | | `labels..actionCardContent` | Chaîne | une description récapitulative affichée dans la carte de l'action. | | `labels..executionRules` | Objet | un objet qui regroupe les définitions de votre `executionRules` vers les messages qui apparaîtront pour les résultats d'exécution dans l'historique du workflow. | | `objectTypes` | Tableau | les types d'objets CRM disponibles avec lesquels cette action peut être utilisée. Si vide, l'action sera disponible pour tous les types d'objets. | | `outputFields` | Tableau | les valeurs résultantes de l'action qui peuvent être utilisées par des actions suivantes dans l'agent ou le workflow. Une action personnalisée peut avoir 0, 1 ou plusieurs résultats. | | `executionRules` | Objet | une liste des définitions que vous pouvez indiquer pour identifier les erreurs de votre service vers l'utilisateur qui crée le workflow. | ## Meilleures pratiques Lors de la création d'outils pour les agents, gardez à l'esprit la check-list des meilleures pratiques suivante : * Commencez par des champs facultatifs, puis définissez comme requis uniquement si stable. * Libellez et décrivez les champs pour les humains et l'IA. * Effectuez des tests avec moins d'instructions d'agent au début pour comprendre comment l'IA interprète un outil. * Gardez les outils concentrés et faites attention à la quantité de champs. * Utilisez les descriptions de champs pour contrôler la créativité des agents. Découvrez-en davantage sur chacune de ces meilleures pratiques dans les sections ci-dessous. > [!WARNING] > > **Remarque :** > > Bien que certaines des recommandations ci-dessous incluent des informations sur les outils de test des agents, ces fonctionnalités de test sont encore en cours de développement. La documentation relative aux outils d'agent sera mise à jour dès que des méthodes de test seront disponibles. ### Développer avec des champs facultatifs Ne définissez pas les champs d'action (`inputFields`) requis pendant le développement actif. Une fois qu'un champ a été défini comme requis et que le projet est chargé, vous ne pouvez plus le supprimer ou le mettre à jour. Vous ne devez définir un champ comme requis que lorsque vous avez confiance dans les détails du champ, tels que son `name` et son `type`. La raison de cette limitation est que la modification de champs requis interromprait tous les workflows actifs qui incluent l'action. ### Concevoir pour une compréhension humaine et IA Les éléments `actionName`, `inputFields` et `labels` doivent clairement communiquer leur utilisation et leur utilité aux humains et à l'agent. Ces champs sont notamment utilisés par l'agent pour comprendre quand appeler l'action et comment transmettre des données à l'outil. Lorsque vous créez vos outils, gardez à l'esprit que les modèles de langage exhaustifs peuvent avoir besoin de descriptions plus explicites que les utilisateurs humains. Par exemple, alors qu'une personne comprendra intuitivement un champ intitulé `Date`, un modèle de langage exhaustif pourrait préférer `Event start date (YYYY-MM-DD)`. Idéalement, les outils doivent être conçus de manière à ce que les agents ne nécessitent pas d'instructions supplémentaires pour les utiliser. Cependant, dans certains cas, les détails du champ seuls peuvent ne pas être suffisants pour l'agent. Par exemple, il peut ne pas comprendre l'ordre prévu pour exécuter des outils qui dépendent des résultats d'autres outils (par exemple, un outil « Envoyer un e-mail » peut dépendre d'un outil « Obtenir les informations de contact » exécuté en premier). Lorsque vous créez un outil, vous devez le tester dans l'agent sans ajouter d'informations à ses instructions au préalable pour mieux comprendre comment il interprète l'outil. Grâce aux tests, vous serez en mesure de déterminer si le moteur de raisonnement fonctionne correctement par lui-même ou s'il a besoin d'instructions supplémentaires. ### Veillez au nombre de champs de saisie Les agents peuvent gérer un grand nombre de champs de saisie dans chaque outil (26 saisies uniques maximum). Cependant, plus il y a de champs de saisie dans un outil, plus vous devez être clair lors de l'attribution des valeurs `actionName`, `inputField` et `label`. Les outils sont plus efficaces et fiables lorsqu'ils sont conçus pour des tâches spécifiques avec un ensemble de paramètres précis. Pour les opérations complexes, demandez-vous s'il serait plus efficace de créer plusieurs outils simples plutôt qu'un seul outil avec un nombre excessif d'entrées. > [!WARNING] > > **Remarque :** > > Il est possible que HubSpot limite le nombre de saisies à l'avenir en fonction du feedback concernant la qualité des agents traitant un grand nombre de saisies. ### Créativité et improvisation de l'agent de contrôle Dans certains cas, vous souhaiterez peut-être qu'un agent soit créatif et improvise. Cependant, il peut y avoir des scénarios où vous ne souhaitez pas que l'agent improvise. Expérimentez avec les instructions du modèle de langage exhaustif dans les noms, libellés et descriptions de vos champs de saisie. Si vous avez besoin de conseils plus stricts, ajoutez des instructions à l'agent pour définir des attentes claires. Par exemple, supposons que vous confiez à un agent la tâche de générer un article de blog, l'un des champs étant le titre de l'article de blog. Selon le degré d'improvisation de l'agent, vous pouvez libeller le champ de manière permissive ou plus restrictive : * **Permissif :** `"Blog title"` * **Restrictif :** `"Blog title (must include the product name 'HubSpot CRM')"` Prenons un autre exemple, considérons les libellés de champs de saisie suivants destinés au contenu des publications sur les réseaux sociaux : * **Permissif :** `"Social post content"` * **Modéré :** `"Social post content (keep under 280 characters)"` * **Restrictif :** `"Social post content (must mention our Q4 sale, include #HubSpot, and stay under 280 characters)"` ## Vérification de l'origine de la requête de l'outil d'agent Lorsqu'un agent utilise un outil pour faire une demande, il fait une requête `POST` à l'`actionUrl` de l'outil. L'appel de l'outil d'agent est authentifié par la validation de l'en-tête `X-HubSpot-Signature` envoyé avec la demande. Il s'agit du même système que HubSpot utilise pour [valider les demandes webhook](/docs/apps/legacy-apps/authentication/validating-requests#validate-the-v3-request-signature). > [!WARNING] > > **Remarque :** > > Vous ne devez pas créer de champs de saisie pour les secrets ou les clés d'API, car cela n'est pas sécurisé et ne correspond pas au modèle d'authentification prévu, notamment parce que le modèle de langage exhaustif devrait recevoir le secret/la clé d'API dans ses instructions ou la recevoir d'un autre outil. # Créer et gérer des types d'événements (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types Découvrez comment définir des types d'événements d'application afin de pouvoir envoyer des données d'occurrence d'événements dans HubSpot. Pour envoyer des données d'événement d'application à HubSpot, vous devez d'abord créer un type d'événement à l'aide d'un projet de développeur. Le type d'événement est un schéma JSON qui définit la structure, les propriétés et les règles de validation des données d'occurrence d'événement que vous allez envoyer. Cela comprend le nom de l'événement, le libellé d'affichage, l'objet CRM cible et les propriétés de l'événement. Les types d'événements comprennent également des définitions des modèles d'affichage pour le rendu de la chronologie des fiches d'informations du CRM. > [!WARNING] > > Les événements d'application décrits dans cette documentation sont destinés aux applications créées pour le [marketplace des applications](https://ecosystem.hubspot.com/marketplace/apps) à l'aide de projets développeur. Pour créer des rapports sur les événements personnalisé pour d'autres types d'intégrations, vous pouvez utiliser des [événements personnalisés](/docs/api-reference/events-manage-event-definitions-v3/guide) à la place. ## Conditions préalables Pour inclure une définition de type d'événement d'application dans votre projet : * Vous devez utiliser la version `7.5.4` ou une version ultérieure de l'ILC de HubSpot. Vous pouvez vérifier quelle version de l'ILC vous avez en exécutant `hs --version`, et la mettre à jour en exécutant `npm i -g @hubspot/cli@next`. * Votre projet doit être déployé avant que vous puissiez le mettre à jour pour inclure un composant d'événement d'application. ## Configurer vos fichiers de projet > [!NOTE] > > Si vous avez déjà créé une application publique avec un événement de chronologie, découvrez comment [la migrer vers la plateforme de développement](#migrate-an-existing-timeline-event-type). **1. Configuration de l'application et structure du projet** Pour créer une définition de type d'événement d'application dans votre projet, mettez à jour votre fichier `hsmeta.json` de [configuration d'application](/docs/apps/developer-platform/build-apps/app-configuration) pour inclure le domaine `timeline` dans le champ `requiredScopes`. Cette donnée est nécessaire pour que les données des événements de l'application apparaissent sur les chronologies des fiches d'informations du CRM. Les installateurs doivent accorder ce domaine pour que vos données d'événement soient correctement envoyées. ```json theme={null} "requiredScopes": [ "timeline" ], ``` > [!NOTE] > > Notez que vous devrez peut-être ajouter d'autres [domaines](/docs/apps/legacy-apps/authentication/scopes#list-of-available-scopes), en fonction des fonctionnalités incluses dans votre application. Ensuite, dans le répertoire `app/` de votre projet, ajoutez un répertoire `app-events`. Dans `app-events/`, ajoutez un fichier de configuration JSON pour définir le type d'événement de l'application. Ce fichier peut porter n'importe quel nom, mais doit se terminer par `*-hsmeta.json`. Vous pouvez inclure jusqu'à 750 types d'événement par application, chacun ayant son propre fichier `*-hsmeta.json`. ```shell theme={null} project-folder/ └── src/ └── app/ ├── app-hsmeta.json └── app-events/ └── my-event-type-hsmeta.json ``` **2. Configurer le schéma de type d'événement** Dans le fichier `*-hsmeta.json` de type d'événement, configurez le [schéma de votre type d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-type-schema). Ce schéma configurera les attributs du type d'événement tels que le nom, le modèle d'affichage de la chronologie des fiches d'informations du CRM et le type d'objet du CRM auquel associer les données d'événement. Si certains de ces champs peuvent être mis à jour après leur création, les champs `name` et `objectType` ne peuvent pas être modifiés une fois que le type d'événement est créé. Par exemple, le schéma de type d'événement suivant peut être utilisé pour suivre les événements de connexion des clients. ```json theme={null} { "uid": "customer_login_event", "type": "app-event", "config": { "name": "Customer login", "headerTemplate": "{{customerName}} logged in", "detailTemplate": "{{customerName}} logged in via the {{loginLocation}}.", "objectType": "CONTACT", "properties": [ { "name": "customerName", "label": "Customer Name", "type": "string" }, { "name": "loginLocation", "label": "Login location", "type": "enumeration", "options": [ { "value": "mobileApp", "label": "Mobile app" }, { "value": "website", "label": "Website" } ] } ] } } ``` Les champs marqués par sont \* obligatoires. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour le type d'événement. | | `type`\* | Chaîne | le type de composant. Doit correspondre à `app-event`. | | `name`\* | Chaîne | le libellé affiché dans HubSpot (50 caractères maximum). Cette valeur ne peut pas être mise à jour après la création. | | `objectType`\* | Chaîne | le nom complet du type d'objet CRM auquel les occurrences d'événements peuvent être associées. Cette valeur ne peut pas être modifiée après la création. Peut être l'un des éléments suivants : `COMPANY`, `CONTACT`, `CUSTOM_OBJECT`, `DEAL`, `TICKET`, `APP_OBJECT`. | | `headerTemplate` | Chaîne | le [modèle de rendu](/docs/apps/developer-platform/add-features/app-events/reference#rendering-templates) de l'en-tête de la carte d'activité CRM chronologie. Peut contenir jusqu'à 1 000 caractères. | | `detailTemplate` | Chaîne | le [modèle de rendu](/docs/apps/developer-platform/add-features/app-events/reference#rendering-templates) pour le corps de la carte d'activité CRM chronologie. Peut contenir jusqu'à 10 000 caractères. | | `properties` | Tableau | propriétés définies pour le type d'événement dans lequel vous stockerez les données d'occurrence d'événement. Chaque type d'événement peut avoir jusqu'à 500 propriétés. Découvrez-en davantage sur les propriétés, y compris les exigences et les limitations, dans la [documentation de référence sur les événements d'application](/docs/apps/developer-platform/add-features/app-events/reference). | **3. Charger vos modifications sur HubSpot** Chargez votre projet sur HubSpot à l'aide de la commande `hs project upload`. ```shell theme={null} hs project upload ``` Pendant la phase de création, HubSpot validera le type d'événement. En cas d'erreurs de validation de schéma, l'ILC renverra une erreur indiquant ce qu'il faut corriger. Par défaut, après une création réussie, HubSpot déploiera automatiquement le projet. Si vous avez désactivé cette option dans les [paramètres de votre projet](/docs/apps/developer-platform/build-apps/manage-apps-in-hubspot#view-your-app-on-the-project-details-page), vous pouvez effectuer un déploiement manuel en utilisant `hs project deploy`. Après le déploiement, le type d'événement de votre application sera désormais disponible et pourra être utilisé pour recevoir des données d'occurrence d'événement. ## Récupérez l'élément fullyQualifiedName Pour envoyer des données d'occurrence d'événement pour le type d'événement, vous devrez récupérer le `fullyQualifiedName` via l'API d'événements de l'application. Ce nom identifie le type d'événement et devra être inclus dans toutes les opérations d'API d'événement d'application. Pour récupérer l'élément `eventTypeName`, adressez une demande `POST` à `https://api.hubapi.com/integrators/timeline/v4/types/projects`. Dans le corps de la demande, incluez : * Un champ `projectName`, qui doit être défini sur la valeur `name` du fichier `hsproject.json` de votre projet. * Un champ `developerSymbol`, qui doit être défini sur la valeur `uid` du fichier de configuration `*-hsmeta.json` du type d'événement. ```json theme={null} { "projectName": "my-marketplace-app", "developerSymbol": "customer_login_event" } ``` La réponse renverra le nom du projet, le nom du type d'événement et le `fullyQualifiedName`. ```json highlight={6} theme={null} { "developerQualifiedSymbol": { "projectName": "marketplace", "developerSymbol": "customer_login_event" }, "fullyQualifiedName": "ae000000_integrators-timeline-event-type-id-0000000" } ``` La valeur `fullyQualifiedName` ne changera jamais, vous pouvez donc la coder en toute sécurité dans votre onboarding. L'API limite le nombre de fois où vous pouvez récupérer cette valeur par jour et ne peut pas être utilisée par programme. ## Gestion des types d'événements Pour mettre à jour un type d'événement après sa création, il vous suffira de mettre à jour le schéma de type d'événement dans votre projet, puis de le recharger pour créer et déployer l'application. Si vous ne souhaitez plus utiliser un type d'événement, vous pouvez le supprimer de votre projet. Toutefois, avant de supprimer un type d'événement, tenez compte des éléments suivants : * La suppression d'un type d'événement est une action permanente et irréversible. * La suppression d'un type d'événement supprime à la fois le type d'événement et toutes les occurrences de ce type de tous les comptes qui ont installé l'application. * La suppression d'un type d'événement va mettre en casse les autres outils HubSpot qui s'appuient sur ce type d'événement, tels que les rapports et les workflows. Pour supprimer le type d'événement, supprimez le fichier de configuration du type d'événement `*-hsmeta.json` de votre projet, puis chargez et déployez le projet. ## Migrer un type d'événement de chronologie existant Si vous avez une application publique existante avec un événement de chronologie, vous pouvez la migrer vers la plateforme de développement en utilisant l'ILC. > [!WARNING] > > Avant de migrer votre application : > > * Consultez le [guide de migration d'application publique](/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-an-existing-public-app) pour connaître les considérations et les limites actuelles de la version bêta de la plateforme de développement. > * Une fois que vous avez migré un type d'événement de chronologie (`v1`/`v3`) vers la plateforme de développeur, vous aurez 7 jours pour modifier les demandes d'API d'événements de chronologie `v1`/`v3` existants vers les nouveaux points de terminaison `v4`, y compris les demandes d'API d'occurrence/d'instance d'événement de type d'événement. Après 7 jours, tous les appels existants vers les points de terminaison d'occurrence d'événement `v1`/`v3` renverront des erreurs `401`. > * Pour créer et mettre à jour des types d'événements et des modèles, vous n'aurez plus besoin d'utiliser l'API. Au lieu de cela, vous les gérerez directement dans le projet via le [fichier de configuration du type d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-type-schema). > * Pour envoyer des données d'occurrence d'événement, vous devrez utiliser les points de terminaison `v4`, qui proposent des [points de terminaison d'envoi unique et par lot](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences). Pour migrer votre application : * Dans le terminal, exécutez `hs app migrate`, puis suivez les invites du terminal pour migrer votre application et votre événement de chronologie. * Une fois le processus de migration terminé, votre application sera hébergée dans un projet développeur et un répertoire de projet local sera créé pour vous. * Pour ouvrir le projet dans HubSpot, accédez au répertoire du projet local, puis exécutez `hs project open`. Notez que les fichiers de configuration générés (`*-hsmeta.json`) peuvent contenir des champs avec des valeurs `null`. Ces champs sont un artefact de la migration et il peut être supprimé en toute sécurité. ## Étapes suivantes Après avoir créé un type d'événement, découvrez comment [envoyer des données d'occurrence d'événement via l'API](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences). Vous pouvez également consulter la [documentation de référence sur les événements d'application](/docs/apps/developer-platform/add-features/app-events/reference) pour continuer à créer et à personnaliser vos événements d'application. # Vue d'ensemble des événements d'application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-events/overview Découvrez comment définir des événements d'application sur la dernière version de la plateforme de développement. Les événements des applications vous permettent d'envoyer des données d'activité enrichies depuis vos systèmes externes directement à HubSpot. Les données d'événement d'application sont associées aux fiches d'informations du CRM et peuvent être utilisées dans les outils d'automatisation, d'analytics et de reporting de HubSpot. Découvrez ci-dessous comment fonctionnent les événements d'application. Pour commencer à intégrer des événements d'application dans votre projet : * [Créer un type d'événement](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types) * [Envoyer les données d'occurrence d'événement](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences) * Consulter la [documentation de référence relative aux événements d'application](/docs/apps/developer-platform/add-features/app-events/reference) > [!WARNING] > > Les événements d'application décrits dans cette documentation sont destinés aux applications créées pour le [marketplace des applications](https://ecosystem.hubspot.com/marketplace/apps) à l'aide de projets développeur. Pour créer des rapports sur les événements personnalisé pour d'autres types d'intégrations, vous pouvez utiliser des [événements personnalisés](/docs/api-reference/events-manage-event-definitions-v3/guide) à la place. ## Fonctionnement des événements d'application Les événements sont des points de données qui capturent ce qui s'est passé à un moment précis, souvent lié à des actions de l'utilisateur, telles que la soumission d'un formulaire, l'envoi d'un SMS ou l'affichage d'une page. Contrairement aux fiches d'informations du CRM, qui sont destinées à indiquer l'état actuel d'une entité, les événements peuvent vous permettre de mieux comprendre les modèles d'activité, les changements de comportement au fil du temps et d'autres tendances. > [!TIP] > > Les événements d'application sont idéaux lorsque vos données : > > * Représente des actions ou des activités qui se produisent de façon répétée. > * Les changements doivent être analysés afin d'identifier les variations ou le volume au fil du temps. > * Ne nécessite pas de mise à jour après la création. À un niveau élevé, un événement d'application contient les éléments suivants : * **Définition du type d'événement :** un schéma JSON qui définit la structure, les propriétés et les règles de validation de l'événement. Cela comprend le nom de l'événement, le libellé d'affichage, l'objet CRM cible et les propriétés de l'événement. Les types d'événements comprennent également des définitions des modèles d'affichage pour le rendu de la chronologie des fiches d'informations du CRM. Les types d'événements sont définis à l'aide de projets développeur. * **Occurrences d'événements :** instances individuelles d'événements qui contiennent des données réelles, validées par rapport à votre schéma de type d'événement. Les données d'occurrence d'événement sont envoyées via l'API d'événements de l'application et incluent l'identifiant du type d'événement, les valeurs de propriété, les horodatages et les métadonnées supplémentaires, ainsi que les données de référence des objets du CRM pour l'association des fiches d'informations du CRM. > [!NOTE] > > **Événements de la chronologie et Événements d'application** > > Auparavant, HubSpot publiait des événements de la chronologie pour vous permettre d'afficher des données d'événements dans les chronologies d'objets du CRM. Les événements d'application permettent cette même fonctionnalité dans une liste étendue d'objets pris en charge, tout en étant disponibles dans d'autres outils HubSpot. Les événements d'application ont désormais leur propre page index en plus des événements personnalisés, offrant une vue unifiée des activités de l'événement. > > Les intégrations d'événements de la chronologie existantes continueront de fonctionner et seront visibles aux mêmes endroits que les événements d'application. Toutefois, pour créer de nouveaux types d'événements ou apporter des modifications à des types existants, vous devez les recréer en tant qu'événement d'application dans votre projet développeur. ## Objets et outils pris en charge Lors de la définition d'un type d'événement, vous le configurerez pour qu'il soit associé à un objet CRM spécifique, ce qui vous permettra de lier les données d'événement à sa source, telles que les contacts qui se connectent à votre site web. Les occurrences d'événements peuvent ensuite être associées à des fiches d'informations CRM de ce type. Les événements d'application peuvent être associés aux objets CRM suivants : * Contacts * Entreprises * Transactions * Tickets * Objets personnalisés * Objets de l'application Les événements d'application peuvent être utilisés dans les outils HubSpot suivants : * **Interface de gestion des événements :** affichez et analysez les données des événements de l'application dans le tableau de bord des événements personnalisés en même temps que les données des événements personnalisé en accédant à **Gestion des données** > **Événements personnalisés** dans votre compte. * **Chronologies des fiches d'informations du CRM :** affichez l'activité chronologique des événements de l'application sur la chronologie des fiches d'informations du CRM associées à leur occurrence. * **Outils de reporting :** utilisez les données d'événements des applications pour créer des rapports personnalisés, des analyses du parcours client et des jeux de données pour l'analyse et la visualisation. * **Scores, listes et workflows des leads :** segmentez votre base de données CRM à l'aide d'événements pour les listes dynamiques, le score des leads et le déclenchement des workflows. ## Meilleures pratiques Lors de la création de types d'événements : * Utilisez des noms clairs et descriptifs pour [les types d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-type-schema) et [les propriétés](/docs/apps/developer-platform/add-features/app-events/reference#event-properties), car ils apparaîtront sous forme de filtres dans les workflows, les listes, les rapports et le tableau de bord des événements personnalisés. * Choisissez les types de propriétés appropriés (chaîne, nombre, date, heure, etc.) qui correspondent à vos données et permettent un filtrage et une analyse appropriés. * Incluez les propriétés qui seront utiles pour la segmentation, le reporting et les déclencheurs d'automatisation (par exemple, les montants des transactions, les rôles d'utilisateur, les catégories d'actions). * Concevez les types d'événements en tenant compte des cas d'utilisation des rapports et des workflows, en tenant compte de la manière dont les utilisateurs filtreront et regrouperont les données d'événement. * Évitez d'apporter des modifications cassantes aux schémas de types d'événements existants, car cela peut perturber les workflows et rapports existants qui dépendent de la structure de l'événement. Pour garantir la qualité des données d'événements : * Examinez toutes les demandes de données d'occurrence d'événement programmatique pour vous assurer qu'elles seront correctement validées par rapport à votre schéma de type d'événement. * Utilisez un formatage cohérent pour les valeurs des propriétés d'événement, en particulier pour les dates, les nombres et les données de catégories. * Assurez-vous que les événements sont associés à des [ID de fiches d'informations du CRM valides](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences#crm-record-association). * Surveillez les taux de réussite des soumissions [d'événements et les réponses aux erreurs](/docs/apps/developer-platform/add-features/app-events/reference#occurrence-send-errors). * Examinez régulièrement les données d'événements sur les chronologies des fiches d'informations du CRM et dans le tableau de bord des événements personnalisés pour en vérifier l'exactitude. Optimisez les performances des soumissions d'événements en : * [Regroupement par lots de plusieurs événements](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences#sending-event-occurrences) dans des demandes d'API uniques lorsque cela est possible (jusqu'à 500 événements par lot). * Conserver des charges utiles d'occurrence d'événement légères en n'incluant que les données nécessaires sur les propriétés. * Mettre en œuvre une logique de relance exponentielle pour les soumissions d'événements qui ont échoué. ## Limites Gardez à l'esprit les limitations suivantes lors de la planification et de la création d'événements d'application. ### Exigences relatives à la version * Les événements d'application ne peuvent être créés que par le biais de la dernière version de la plateforme de projets de développement (`2025.2`). * Pour les types d'événements existants, vous pouvez continuer d'utiliser les [API d'événements de chronologie v1](/docs/api-reference/legacy/crm-timeline-v1/get-integrations-v1-application-id-timeline-event-event-typeid-event-id) et [v3](/docs/api-reference/crm-timeline-v3/guide). Toutefois, vous ne pouvez pas créer de nouveaux types d'événement à l'aide des API `v1` et `v3`. ### Contraintes de type d'événement * Les événements doivent être conformes au schéma de type d'événement défini, sinon ils seront rejetés. * Certains [champs de type d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-type-schema) ne peuvent pas être mis à jour après la création du type d'événement (par exemple, `name` et `objectType`). * Les nouveaux types d'événements sont soumis à un processus d'évaluation avant de pouvoir être activés. ### Limites des données * Les propriétés individuelles sont limitées à 510 Ko et la taille totale de l'événement est limitée à 1 Mo. * Les événements d'applications sont destinés aux fournisseurs du marketplace des applications et ne fonctionnent qu'avec des applications configurées pour utiliser l'authentification OAuth. Les systèmes internes devraient plutôt utiliser [des événements personnalisés](/docs/api-reference/events-manage-event-definitions-v3/guide.mdx). ## Pour commencer Pour commencer à travailler avec des événements d'application, vous devrez : * [Créez un type d'événement](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types) pour définir la structure de vos données d'événement à l'aide d'un projet développeur. * [Envoyez des données d'occurrence d'événement](/docs/apps/developer-platform/add-features/app-events/send-event-occurrences#send-a-single-occurrence) à l'application à l'aide de [l'API d'événements de l'application](). * Exploiter les données dans HubSpot en fonction des besoins à l'aide d'outils de reporting, d'automatisation ou d'analytics. # Référence des événements d'application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-events/reference Informations de référence pour les événements d'application sur la dernière version de la plateforme de développeur. Vous trouverez ci-dessous des informations de référence relatives à l'utilisation des événements d'application, notamment les schémas de type d'événement, les modèles de rendu de chronologie d'événement, les champs d'occurrence d'événement, etc. ## Structure du projet Dans le contexte d'un projet, vous placerez les définitions des types d'événements dans un répertoire `app-events` sous `app/`. Le répertoire `app-events` doit contenir un fichier de définition de schéma JSON pour chaque type d'événement (`*-hsmeta.json`). ```shell theme={null} project-folder/ └── src/ └── app/ ├── app-hsmeta.json └── app-events/ └── my-event-type-hsmeta.json ``` Pour inclure des définitions de types d'événement dans un projet, procédez comme suit : * Votre application doit utiliser l'authentification OAuth et être configurée pour la distribution sur le marketplace des applications. En outre, l'application doit inclure `timeline` dans son `requiredScopes`. Découvrez-en davantage sur la [configuration de l'application](/docs/apps/developer-platform/build-apps/app-configuration). * Votre projet doit être correctement déployé avant de pouvoir inclure un composant d'événement d'application. ## Schéma de type d'événement Voici les options de configuration disponibles pour les schémas de type d'événement (`*-hsmeta.json`). Notez que certains des attributs ci-dessous ne peuvent pas être modifiés après la création du type d'événement. > [!WARNING] > > Chaque application est limitée à 750 types d'événements. ```json theme={null} { "uid": "customer_login_event", "type": "app-event", "config": { "name": "Customer login", "headerTemplate": "{{customerName}} logged in.", "detailTemplate": "{{customerName}} logged in via the {{loginLocation}}.", "objectType": "CONTACT", "properties": [ { "name": "customerName", "label": "Customer Name", "type": "string" }, { "name": "loginLocation", "label": "Login location", "type": "enumeration", "options": [ { "value": "mobileApp", "label": "Mobile app" }, { "value": "website", "label": "Website" } ] } ] } } ``` Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour le type d'événement. | | `type`\* | Chaîne | le type de composant. Doit correspondre à `app-event`. | | `name`\* | Chaîne | le libellé affiché dans HubSpot (50 caractères maximum). Cette valeur ne peut pas être mise à jour après la création. | | `objectType`\* | Chaîne | le nom complet du type d'objet CRM auquel les occurrences d'événements peuvent être associées. Cette valeur ne peut pas être modifiée après la création. Peut être l'un des éléments suivants : `COMPANY`, `CONTACT`, `CUSTOM_OBJECT`, `DEAL`, `TICKET`, `APP_OBJECT`. | | `headerTemplate` | Chaîne | le [modèle de rendu](#rendering-templates) de l'en-tête de la carte d'activité CRM chronologie. Peut contenir jusqu'à 1 000 caractères. | | `detailTemplate` | Chaîne | le [modèle de rendu](#rendering-templates) pour le corps de la carte d'activité CRM chronologie. Peut contenir jusqu'à 10 000 caractères. | | `properties` | Tableau | propriétés définies pour le type d'événement dans lequel vous stockerez les données d'occurrence d'événement. Chaque type d'événement peut avoir jusqu'à 500 propriétés. Découvrez-en davantage sur les propriétés d'événement ci-dessous. | ### Propriétés d'événement Lors de la définition du schéma d'événement, utilisez le tableau `properties` pour définir les champs vers lesquels vous enverrez les données d'occurrence d'événement. Chaque type d'événement peut avoir jusqu'à 500 propriétés. ```json theme={null} "properties": [ { "name": "customerName", "label": "Customer Name", "type": "string" }, { "name": "loginLocation", "label": "Login location", "type": "enumeration", "options": [ { "value": "mobileApp", "label": "Mobile app" }, { "value": "website", "label": "Website" } ] } ] ``` Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `name`\* | Chaîne | le nom interne de la propriété. Doit être en minuscules et comporter entre 1 et 500 caractères. Les noms de propriété doivent être uniques par type d'événement. Cette valeur ne peut pas correspondre à la regex `"[A-Za-z0-9_\\-.]+"` ou commencer par `hs_`. | | `label`\* | Chaîne | le libellé affiché dans HubSpot. Doit être en minuscules et comporter entre 1 et 500 caractères. | | `type`\* | Chaîne | le type de données capturées dans la propriété. Peut être l'un des éléments suivants `STRING`, `NUMBER`, `DATE`, `ENUMERATION`. | | `options` | Tableau | pour les propriétés de type `ENUMERATION`, ce champ fournit les options disponibles. Doit contenir au moins une option. Chaque option est un objet qui contient :
  • `name` : le libellé de l'option affichée dans HubSpot.
  • `value` : la valeur interne fournie par l'occurrence de l'événement.
Le `name` et le `label` doivent être uniques dans le type d'événement. | | `objectPropertyName` | Chaîne | le cas échéant, le nom de la propriété d'objet CRM qui doit être mise à jour lorsque des données d'événement sont envoyées à HubSpot. La valeur de cette propriété remplacera toutes les valeurs existantes dans cette propriété. Découvrez-en davantage sur l'horodatage des propriétés des fiches d'informations CRM ci-dessous. | ### Horodatage de propriété Dans certains cas, vous souhaiterez peut-être modifier les valeurs des propriétés de la fiche d'informations CRM en fonction des données d'occurrence d'événement de l'application. Par exemple, vous pouvez vouloir mettre à jour le prénom et le nom de famille d'un contact avec de nouvelles valeurs définies par l'occurrence (par exemple, soumission de formulaire). Pour mettre à jour les propriétés des fiches d'informations CRM via des occurrences d'événement, vous pouvez lier une propriété d'événement à une propriété CRM dans le schéma de type d'événement. Dans les champs de définition d'une propriété d'événement donnée, incluez le champ `objectPropertyName` et précisez la propriété CRM à associer. Une fois qu'une propriété est liée, HubSpot mettra toujours à jour la valeur de la propriété sur la fiche d'informations CRM en utilisant la valeur de l'occurence la plus récente en fonction du champ `timestamp`. Par exemple, le schéma de type d'événement ci-dessous associe la propriété d'événement `customerName` à une propriété de contact personnalisée nommée `custom_property_name`. Lorsque les données d'occurrence d'événement incluent une valeur pour `customerName`, `custom_property_name` sera mise à jour pour la fiche d'informations CRM associée. ```json theme={null} "properties": [ { "name": "customerName", "label": "Customer Name", "type": "string", "objectPropertyName": "custom_property_name" } ] ``` ### Modèles de rendu Les schémas de type d'événement peuvent inclure les champs `headerTemplate` et `detailTemplate` pour configurer le rendu des occurrences d'événement sur les chronologies des fiches d'informations CRM. * `headerTemplate` : une description d'une ligne de l'événement en haut de la carte d'activité (jusqu'à 1 000 caractères). * `detailTemplate` : les détails de l'événement dans le corps de la carte d'activité (jusqu'à 10 000 caractères). Les modèles de rendu sont écrits à l'aide [de Markdown](https://www.markdownguide.org/basic-syntax/) avec les modèles [Handlebars](https://handlebarsjs.com/guide/). Ces modèles peuvent restituer les données d'occurrence d'événement comme suit : * Dans les deux modèles, vous pouvez accéder à toutes données de `property` transmises par l'occurrence d'événement à l'aide de la syntaxe `{{propertyName}}`. * Dans le `detailTemplate`, vous pouvez également accéder aux valeurs `extraData` transmises par l'occurrence d'événement à l'aide de la syntaxe `{{extraData.fieldName}}`. Vous pouvez accéder à n'importe quel niveau d'attribut en notation par points `extraData`, tel que `{{extraData.person1.preferredName}}`. > [!WARNING] > > L'objet `extraData` peut seulement contenir un JSON valide. Si le JSON est erroné, l'occurrence sera rejetée et vous recevrez une réponse d'erreur. Par exemple, les modèles ci-dessous utilisent les données de propriété `customerName` et `loginLocation`, ainsi que le champ `surveyData` de `extraData` [envoyé via l'occurrence d'événement](#event-occurrences). ![Capture d'écran montrant l'exemple de modèle de rendu ci-dessous sur la chronologie d'un contact.](https://www.hubspot.com/hubfs/Knowledge_Base_Images/CRM/Contacts/example-timeline-event-rendering-template.png) ```json theme={null} "headerTemplate": "{{customerName}} logged in via the {{loginLocation}}.", "detailTemplate": "#### Post-login survey\n{{#each extraData.surveyData}}\n- **{{question}}**: {{answer}}\n{{/each}}", ``` Les modèles étant conçus avec Markdown et Handlebars, vous pouvez tirer parti des aides de Handlebars pour rendre le contenu plus dynamique. Par exemple, l'élément suivant `detailTemplate` inclut [l'assistant `#if`](https://handlebarsjs.com/guide/builtin-helpers.html#if) pour effectuer une restitution conditionnelle du contenu selon que les données d'occurrence d'événement incluent ou non le champ `surveyData` dans `extraData`. * Si `extraData` contient `surveyData`, afficher les réponses à l'enquête après connexion. * En l'absence de `surveyData` lors de l'occurrence de l'événement, afficher `No additional information.`. ![Capture d'écran montrant l'affichage de l'exemple de code ci-dessous sur la chronologie d'un contact. ](https://www.hubspot.com/hubfs/Knowledge_Base_Images/CRM/Contacts/if-helper-in-handlebars-template.png) ```json theme={null} "detailTemplate": "{{#if extraData.surveyData}}#### Post-login survey\n{{#each extraData.surveyData}}\n- **{{question}}**: {{answer}}\n{{/each}}{{else}}No additional information." ``` ### Utilisation d'iframes Lorsque les données d'occurrence d'événement contiennent le champ `timelineIFrame`, la carte d'activité de la chronologie inclura un lien hypertexte sur lequel les utilisateurs pourront cliquer pour ouvrir le contenu lié dans un iframe. ![Capture d'écran d'un lien inclus dans une carte d'activité de chronologie en raison du champ timelineIFrame](https://www.hubspot.com/hubfs/Knowledge_Base_Images/CRM/Contacts/app-events-timeline-card-iframe-link.png) ```json theme={null} "timelineIFrame": { "linkLabel": "Click me", "headerLabel": "This is an iframe", "url": "https://hubspot.mintlify.io/en-us/apps/developer-platform/build-apps/overview", "width": 300, "height": 300 } ``` | Champ | Type | Description | | - | - | - | | `linkLabel` | Chaîne | le texte du lien hypertexte qui lancera l'iframe au clic. | | `headerLabel` | Chaîne | le libellé de la fenêtre modale qui affiche le contenu iFrame. | | `url` | Chaîne | l'URL du contenu de l'iframe. | | `width` | Entier | la largeur de la fenêtre modale de l'iframe. | | `height` | Entier | la hauteur de la fenêtre modale de l'iframe. | ## Occurrence de l'événement Pour envoyer des occurrences d'événements pour un type d'événement donné, effectuez une requête `POST` aux points de terminaison ci-dessous. L'API d'événements d'application comprend des points de terminaison pour l'envoi d'occurrences d'événements uniques et de lots d'occurrences de plusieurs événements. Pour les deux points de terminaison, les données d'occurrence d'événement devront être validées par rapport à un schéma de type d'événement existant, que vous indiquerez `eventTypeName` dans le corps de la requête. **Envoyer une occurrence unique** Pour envoyer une occurrence d'événement unique, effectuez une requête `POST` à `/integrators/timeline/v4/events`. Dans le corps de la requête, incluez les données d'occurrence d'événement, en respectant le schéma défini du type d'événement. ```json theme={null} { "eventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "objectId": "123456", "id": "login-1", "properties": { "customerName": "Mark S.", "loginLocation": "mobileApp" } }, ``` **Envoyer un lot d'occurrences** Pour envoyer un lot d'occurrences d'événements, effectuez une demande `POST` à `/integrators/timeline/v4/events/batch`. Dans le corps de la requête, incluez jusqu'à 500 objets d'occurrence d'événement séparés par des virgules dans un tableau `inputs`. Si certaines occurrences ne sont pas validées, les occurrences validées avec succès seront toujours acceptées et persistées. ```json theme={null} { "inputs": [ { "EventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "id": "login_event_100", "objectId": "769851", "properties": { "customerName": "Tim", "loginLocation": "mobileApp" }, "extraData": { "surveyData": [ { "question": "How was your login experience?", "answer": "Fine!" }, { "question": "How likely are you to recommend logging in to a co-worker?", "answer": "Extremely likely" } ] } }, { "EventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "id": "login_event_101", "objectId": "769851", "properties": { "customerName": "Tim", "loginLocation": "website" }, "extraData": {} } ] } ``` Dans le corps de la requête, incluez les données basées sur le schéma de type d'événement défini. Le corps de la requête doit inclure l'événement `eventTypeName`, que vous pouvez [récupérer via l'API](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types#retrieve-the-fullyqualifiedname). ```json theme={null} { "eventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "objectId": "8675309", "properties": { "customerName": "Mark S.", "loginLocation": "mobileApp" }, "id": "login-1529a3gda23", "extraData": { "surveyData": [ { "question": "How was your login experience?", "answer": "Fine!" }, { "question": "How likely are you to recommend logging in to a co-worker?", "answer": "Extremely likely" } ] } } ``` Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `eventTypeName`\* | Chaîne | le nom entièrement qualifié du type d'événement, que vous utiliserez pour identifier l'événement via l'API. Cette valeur est automatiquement définie par HubSpot et peut être [obtenue via l'API](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types#retrieve-the-fullyqualifiedname) après la création du type d'événement. Cette valeur ne peut pas être modifiée après la création. | | `objectId`\* | Chaîne | l'ID de la fiche d'informations de CRM à associer à l'événement. Ce champ peut être utilisé pour tous les types de fiches d'informations de CRM et constitue l'identifiant recommandé. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `email` | Chaîne | pour l'association de contact, vous pouvez fournir l'adresse e-mail du contact à associer. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `utk` | Chaîne | pour l'association de contacts, vous pouvez fournir le jeton utilisateur d'un contact existant à associer. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `domain` | Chaîne | pour l'association d'entreprise, vous pouvez fournir le domaine de site web d'une entreprise existante. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `timestamp` | Chaîne | définit l'heure de l'occurrence de l'événement (format [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)). Si ce champ n'est pas renseigné, HubSpot utilisera par défaut l'horodatage de l'envoi des données d'occurrence d'événement. | | `properties` | Objet | paires clé-valeur des noms et valeurs des [propriétés](/docs/apps/developer-platform/add-features/app-events/reference#event-properties) que vous avez définies pour le type d'événement. | | `extraData` | Tableau | lorsqu'il est inclus, fournit des informations supplémentaires pour le rendu de la chronologie. Doit être un JSON valide. Découvrez-en davantage sur [les données supplémentaires dans le rendu des modèles](#rendering-templates). | | `timelineIFrame` | Objet | une fois incluse, la carte de chronologie comprendra un lien hypertexte qui permet aux utilisateurs d'ouvrir le contenu lié dans un iframe. Découvrez-en davantage sur [l'utilisation des iframes](#using-iframes). | | `id` | Chaîne | un identifiant unique pour l'occurrence de l'événement. Doit être unique dans le type d'événement. Si ce champ n'est pas renseigné, HubSpot générera un GUID aléatoire. Lorsque plusieurs événements ont le même ID, le premier sera accepté et tous les autres seront rejetés. | Si certaines occurrences ne sont pas validées, les occurrences validées avec succès seront toujours acceptées et persistées. Le message d'erreur dans la réponse fournira des informations sur ce que vous devrez corriger. ![Capture d'écran d'un exemple de message d'erreur que vous pouvez recevoir lors de l'envoi de données d'occurrence d'événement](https://www.hubspot.com/hubfs/Knowledge_Base_Images/CRM/Contacts/timeline-events-api-error-validation-example.png) ### Association des fiches d'informations CRM Chaque événement doit être associé à une fiche d'informations CRM, le type d'objet CRM étant défini par le schéma de type d'événement. L'API des événements de l'application comprend plusieurs champs pour associer les données d'occurrence d'événement aux fiches d'informations CRM. Pour tous les objets CRM pris en charge, il est recommandé d'utiliser le champ `objectId`. Cependant, dans certaines situations, vous souhaiterez peut-être utiliser les autres champs. * `utk`/`email` : si vous ne connaissez pas l'ID du contact, utilisez le champ `utk` et/ou `email` pour l'identification. Fournir ces deux identifiants vous permet également de créer et de mettre à jour des contacts. Par exemple : * Si `utk` correspond à un contact existant mais que l'`email` ne correspond pas, HubSpot mettra à jour le contact avec la nouvelle adresse e-mail. * Si aucun `objectId` n'est fourni, l'occurrence de l'événement sera associée à un contact existant correspondant à `utk`/`email`, ou HubSpot créera un nouveau contact si aucune correspondance n'est trouvée. * Notez que le `utk` seul ne peut pas créer de nouveaux contacts. Vous devez toujours inclure l'`email` avec `utk` pour garantir une bonne association. * `domain` : pour l'association d'entreprises, vous devez fournir l'`objectId`, mais vous pouvez également l'inclure le `domain` pour mettre à jour la propriété de `domain` de cette entreprise. # Envoyer des occurrences d'événements (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-events/send-event-occurrences Découvrez comment envoyer des données d'occurrence d'événement dans HubSpot à l'aide des schémas de type d'événement que vous avez définis. Après [avoir défini un schéma de type d'événement](en-us/apps/developer-platform/build-apps/features/app-events/create-and-manage-event-types) et [récupéré son fullyQualifiedName](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types#retrieve-the-fullyqualifiedname), vous pouvez envoyer des données d'occurrence d'événement via l'API d'événements de l'application. Lors de l'envoi de données d'événement, vous devrez respecter le schéma que vous avez créé précédemment. Les requêtes qui ne correspondent pas au schéma échoueront à être validées et ne seront pas capturées par l'application. ## Envoi d'occurrence d'événements **Envoyer une occurrence unique** Pour envoyer une occurrence d'événement unique, effectuez une requête `POST` à `/integrators/timeline/v4/events`. Dans le corps de la requête, incluez les données d'événements suivant le schéma défini pour le type d'événement ainsi que la valeur `fullyQualifiedName` dans un champ `eventTypeName`. ```json theme={null} { "eventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "objectId": "123456", "id": "login-1", "properties": { "customerName": "Mark S.", "loginLocation": "mobileApp" } }, ``` **Envoyer un lot d'occurrences** Pour envoyer un lot d'occurrences d'événements, effectuez une demande `POST` à `/integrators/timeline/v4/events/batch`. Dans le corps de la requête, incluez jusqu'à 500 objets d'occurrence d'événement séparés par des virgules dans un tableau `inputs`. Si certaines occurrences ne sont pas validées, les occurrences validées avec succès seront toujours acceptées et persistées. ```json theme={null} { "inputs": [ { "EventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "id": "login_event_100", "objectId": "769851", "properties": { "customerName": "Tim", "loginLocation": "mobileApp" }, "extraData": { "surveyData": [ { "question": "How was your login experience?", "answer": "Fine!" }, { "question": "How likely are you to recommend logging in to a co-worker?", "answer": "Extremely likely" } ] } }, { "EventTypeName": "ae000000_integrators-timeline-event-type-id-0000000", "id": "login_event_101", "objectId": "769851", "properties": { "customerName": "Tim", "loginLocation": "website" }, "extraData": {} } ] } ``` Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `eventTypeName`\* | Chaîne | le nom entièrement qualifié du type d'événement, que vous utiliserez pour identifier l'événement via l'API. Cette valeur est automatiquement définie par HubSpot et peut être [obtenue via l'API](/docs/apps/developer-platform/add-features/app-events/create-and-manage-event-types#retrieve-the-fullyqualifiedname) après la création du type d'événement. Cette valeur ne peut pas être modifiée après la création. | | `objectId`\* | Chaîne | l'ID de la fiche d'informations de CRM à associer à l'événement. Ce champ peut être utilisé pour tous les types de fiches d'informations de CRM et constitue l'identifiant recommandé. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `email` | Chaîne | pour l'association de contact, vous pouvez fournir l'adresse e-mail du contact à associer. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `utk` | Chaîne | pour l'association de contacts, vous pouvez fournir le jeton utilisateur d'un contact existant à associer. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `domain` | Chaîne | incluez ce champ en plus de `objectId` pour définir la valeur de propriété de l'entreprise `domain`. Découvrez-en davantage sur [l'association des fiches d'informations CRM](#crm-record-association). | | `timestamp` | Chaîne | définit l'heure de l'occurrence de l'événement (format [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)). Si ce champ n'est pas renseigné, HubSpot utilisera par défaut l'horodatage de l'envoi des données d'occurrence d'événement. | | `properties` | Objet | paires clé-valeur des noms et valeurs des propriétés que vous avez configuré pour le type d'événement. Découvrez-en davantage sur les [propriétés d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-properties). | | `extraData` | Objet | des informations supplémentaires qui seront disponibles pour les [modèles de rendu de chronologie](/docs/apps/developer-platform/add-features/app-events/reference#rendering-templates). Doit être au format JSON valide. | | `timelineIFrame` | Objet | une fois incluse, la carte de chronologie comprendra un lien hypertexte qui permet aux utilisateurs d'ouvrir le contenu lié dans un iframe. Découvrez-en davantage sur [l'utilisation des iframes](/docs/apps/developer-platform/add-features/app-events/reference#using-iframes). | | `id` | Chaîne | un identifiant unique pour l'occurrence de l'événement. Doit être unique dans le type d'événement. Si ce champ n'est pas renseigné, HubSpot générera un GUID aléatoire. Lorsque plusieurs événements ont le même ID, le premier sera accepté et tous les autres seront rejetés. | ## Association des fiches d'informations CRM Chaque événement doit être associé à une fiche d'informations CRM, le type d'objet CRM étant défini par le schéma de type d'événement. L'API des événements de l'application comprend plusieurs champs pour associer les données d'occurrence d'événement aux fiches d'informations CRM. Pour tous les objets CRM pris en charge, il est recommandé d'utiliser le champ `objectId`. Cependant, dans certaines situations, vous souhaiterez peut-être utiliser les autres champs. * `utk`/`email` : si vous ne connaissez pas l'ID du contact, utilisez le champ `utk` et/ou `email` pour l'identification. Fournir ces deux identifiants vous permet également de créer et de mettre à jour des contacts. Par exemple : * Si `utk` correspond à un contact existant, mais que l'`email` ne correspond pas, HubSpot mettra à jour le contact (par `utk`) avec la nouvelle adresse e-mail. * Si aucun `objectId` n'est fourni, l'occurrence de l'événement sera associée à un contact existant correspondant à `utk`/`email`, ou HubSpot créera un nouveau contact si aucune correspondance n'est trouvée. * Notez que le `utk` seul ne peut pas créer de nouveaux contacts. Vous devez toujours inclure l'`email` avec `utk` pour garantir une bonne association. * `domain` : pour l'association d'entreprises, vous devez fournir l'`objectId`, mais vous pouvez également l'inclure le `domain` pour mettre à jour la propriété de `domain` de cette entreprise. Voici l'ordre de priorité des propriétés d'association des fiches d'informations CRM, le nombre le plus bas étant la priorité la plus élevée : | Champ | Priorité | Description | | - | - | - | | `objectId` | 1 | L'ID de fiche d'informations CRM (recommandé). | | `utk` | 2 | Le jeton d'utilisateur du contact (contacts uniquement). | | `email` | 3 | L'adresse e-mail du contact (contacts uniquement). | | `domain` | 4 | Le domaine de l'entreprise (entreprises uniquement). | ## Envoi de données supplémentaires Au-delà de l'envoi de données aux [propriétés d'événement](/docs/apps/developer-platform/add-features/app-events/reference#event-properties) et [de la mise à jour des propriétés CRM via les occurrences d'événement](/docs/apps/developer-platform/add-features/app-events/reference#property-stamping), vous pouvez inclure des données supplémentaires pour le [rendu de la chronologie](/docs/apps/developer-platform/add-features/app-events/reference#rendering-templates) via l'objet `extraData`. > [!WARNING] > > L'objet `extraData` peut seulement contenir un JSON valide. Si le JSON est erroné, l'occurrence sera rejetée et vous recevrez une réponse d'erreur. Les valeurs des champs `extraData` sont accessibles selon le type d'événement `detailTemplate` utilisant la syntaxe `{{extraData.fieldName}}`. Tous les niveaux d'attribut de `extraData` sont disponibles par le biais de la notation par points, comme `{{extraData.person1.preferredName}}`. Par exemple, les modèles ci-dessous utilisent les données de propriété `customerName` et `loginLocation`, ainsi que le champ `surveyData` de `extraData` [envoyé via l'occurrence d'événement](#event-occurrences). ![Capture d'écran montrant l'exemple de modèle de rendu ci-dessous sur la chronologie d'un contact.](https://www.hubspot.com/hubfs/Knowledge_Base_Images/CRM/Contacts/example-timeline-event-rendering-template.png) **Données sur l'occurrence d'événements** ```json theme={null} { "eventTemplateId": "5488733", "objectId": "769851", "tokens": { "customerName": "Tim", "loginLocation": "mobileApp" }, "extraData": { "surveyData": [ { "question": "How was your login experience?", "answer": "Fine!" }, { "question": "How likely are you to recommend logging in to a co-worker?", "answer": "Extremely likely" } ] } } ``` **Configuration du modèle de chronologie** ```json theme={null} "headerTemplate": "{{customerName}} logged in via the {{loginLocation}}.", "detailTemplate": "#### Post-login survey\n{{#each extraData.surveyData}}\n- **{{question}}**: {{answer}}\n{{/each}}", ``` # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-objects/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Premiers pas avec Objets de l'application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-objects/quickstart-guide-to-app-objects Découvrez comment créer une nouvelle application unifiée de preuve de concept (BÊTA). > [!NOTE] > > L'utilisation de cette fonctionnalité nécessite une autorisation de HubSpot. Si vous souhaitez demander l'accès aux objets d'application ou si vous souhaitez en savoir plus sur les fonctionnalités, veuillez soumettre [ce formulaire](https://developers.hubspot.com/app-objects-interest). Découvrez comment créer une application de preuve de concept dans laquelle vous configurerez un objet d'application que vous pourrez tester et utiliser dans un compte de test de développeur. **1. Installer la dernière version de l'ILC HubSpot** Vous aurez besoin de la dernière version bêta de [l'ILC HubSpot](/docs/developer-tooling/local-development/hubspot-cli/reference) pour créer une application unifiée. Dans une fenêtre de terminal, exécutez la commande suivante : ```shell theme={null} npm install -g @hubspot/cli@next ``` L'ILC doit être une version `7.4.4-beta.0` ou ultérieure. Vous pouvez vérifier la version de l'ILC dont vous disposez en exécutant `hs --version`. **2. Authentifier votre compte de développeur** Vous devrez ensuite authentifier votre compte de développeur en exécutant la commande suivante : ```shell theme={null} hs auth ``` * Suivez les instructions pour générer une clé d'accès personnelle dans votre compte, puis copiez-la et collez-la dans le terminal pour enregistrer votre configuration. * Pendant cette période bêta, il est recommandé de faire de ce compte votre compte par défaut dans l'ILC. Cela permettra d'éviter d'éventuelles erreurs d'accès pour le compte pour lequel vous avez participé à la bêta. **3. Créer un nouveau projet de boilerplate** Exécutez la commande ci-dessous dans votre terminal pour créer un nouveau projet et une nouvelle application du marketplace avec les fonctionnalités actuellement compatibles ou un schéma de référence d'objet d'application. ```shell theme={null} hs project create --templateSource robrown-hubspot/hubspot-project-components-ua-app-objects-beta ``` **4. Configurez le projet nouvellement créé et chargez-le sur votre compte de développeur** L'infrastructure de projets déplace les fonctionnalités d'application qui étaient précédemment configurées dans l'interface utilisateur ou via l'API vers des fichiers de code source, généralement définis comme des fichiers de configuration `-hsmeta.json`. Les fonctionnalités de l'application sont ensuite créées à l'aide d'une combinaison de sous-dossiers du répertoire `/src/app` principal et d'autres fichiers de configuration si nécessaire. Pour configurer votre projet : * Ajoutez une ou plusieurs URL de redirection valides au fichier `app-hsmeta.json` en fonction de la configuration de votre serveur OAuth local (ou hors production). > [!TIP] > > ### Remarque : > > Pour commencer, vous pouvez utiliser [l'exemple d'Node.js OAuth](http://github.com/hubspot/oauth-quickstart-nodejs) et l'exécuter localement. Elle est déjà configurée pour fonctionner avec `https://localhost:3000/oauth-callback` comme l'URL de redirection configurée dans le code d'exemple du boilerplate à partir de la commande `hs project create` que vous avez exécutée à l'étape précédente. * Modifiez la propriété `uid` de l'application dans le fichier `app-hsmeta.json` et les autres fichiers de configuration `*-hsmeta.json` de votre projet. > [!WARNING] > > Les UID sont utilisés comme identifiant unique pour tous les composants et fonctionnalités de votre projet. Une fois qu'une fonctionnalité et un UID sont créés, la modification ou la modification de l'UID dans les déploiements ultérieurs obligera la plateforme à le reconnaître comme différent des fonctionnalités précédentes, ce qui n'est peut-être pas prévu. * Lorsque vous utilisez des objets d'application pour votre application unifiée, seules les définitions de propriété « Nom » autorisées seront autorisées en fonction de votre demande d'objet. Dans le cadre de cette version bêta privée, vous devriez avoir reçu séparément confirmation du « nom » approuvé de votre application, qui doit être utilisé dans la configuration `*-object-hsmeta.json`. À titre de référence, le nom entièrement qualifié (FQN) de votre objet d'application sera `a_`. Par exemple, si votre `appId` est `16858319` et votre propriété `name` était `CARS`, alors votre FQN serait `a16858319_cars`. * Après avoir enregistré vos modifications, exécutez la commande CLI `hs project upload` pour charger votre projet sur la plateforme de développement HubSpot et déclencher automatiquement une nouvelle build. * Dans une fenêtre de navigateur, accédez à `https://app.hubspot.com/developer_projects/` pour accéder à l'interface utilisateur des projets et vérifiez que l'application et le projet ont été correctement créés, créés et déployés. **5. Ajoutez l'ID client et le secret client de votre application à votre application** * Après avoir téléchargé votre projet, vous devrez obtenir les détails d'authentification pour que votre application soit copiée dans votre configuration OAuth : * Cliquez sur **Projets** dans le menu de navigation *Développement*. * Cliquez sur le **nom** de votre nouveau projet. * Cliquez sur le **UID** de votre application, puis sur l'onglet **Authentification**. * Copiez *l'ID du client* et le *Secret client* de votre nouvelle application et collez-les aux emplacements correspondants dans la configuration de votre serveur OAuth local, puis redémarrez votre serveur OAuth. **6. Configurer la configuration du schéma d'objet d'application** Ensuite, vous allez configurer le schéma d'objet de votre application : * Ajoutez un nouvel objet d'application en créant un répertoire dans le répertoire `/src/app` et nommez-le `app-objects`. Le chemin résultant vers le nouveau répertoire devrait être `/src/app/app-objects`. * Créez un nouveau fichier de configuration pour représenter le schéma de votre objet, Vous devez utiliser le nom d'objet attribué à votre application pendant le processus d'aperçu comme préfixe pour le nom de fichier, suivi de `-object-hsmeta.json`. Par exemple, dans le modèle de projet de référence, le nom d'objet de l'application est « CAR », de sorte que le fichier de configuration résultant est nommé `car-object-hsmeta.json`. * Consultez le fichier de référence de [définition du composant d'objet d'application](/docs/apps/developer-platform/add-features/app-objects/reference#app-schema) et personnalisez les champs en fonction des valeurs correspondantes pour votre objet d'application. * Dans l'objet `config` de votre définition, le champ `name` doit correspondre au nom qui a été accordé à votre application lors du processus d'évaluation, formaté dans le format `UPPER_SNAKE_CASE`. * Notez qu'une fois que les propriétés et les champs ont été ajoutés au schéma d'objet d'application et chargés dans votre projet à l'étape suivante, ils ne peuvent pas être supprimés. > [!TIP] > > ### Remarque : > > Pour plus de commodité pendant les tests, le même nom d'objet d'application peut être utilisé sur plusieurs applications pour prendre en charge votre cycle de vie de développement. Commencez par cette application de preuve de concept, puis, à mesure que des migrations deviennent disponibles, vous pourrez utiliser les mêmes noms et définitions de schéma dans vos applications de développement, de préparation et de production. Les UID de chacune de ces instances devront être uniques. * Lorsque vous avez terminé de modifier la définition du schéma d'objet de votre application et que vous êtes prêt à valider ces modifications, exécutez les commandes suivantes pour enregistrer vos modifications : ```shell theme={null} hs project upload hs project deploy ``` * Dans une fenêtre de navigateur, accédez à `https://app.hubspot.com/developer_projects/` pour accéder à l'interface utilisateur des projets et vérifiez que l'application et le projet ont été correctement créés, créés et déployés. **7. Mettre à jour votre application** Maintenant que le schéma d'objet de votre application a été chargé, vous devez mettre à jour les domaines définis dans votre fichier `app-hsmeta.json` pour refléter les domaines créés à partir de l'étape précédente. Ces domaines devraient être visibles dans les journaux de l'ILC après l'exécution de `hs project upload`. * Modifiez le fichier `app-hsmeta.json` et ajoutez les nouveaux domaines au tableau de `requiredScopes` dans la définition `auth`. Par exemple, si votre `appId` était `a12345`, vous modifieriez la définition `auth` comme suit : ```json theme={null} "auth": { "type" : "oauth", "redirectUrls": ["http://localhost:3000/oauth-callback"], "requiredScopes": [ "crm.objects.contacts.read", "crm.objects.contacts.write", "crm.app.objects.a12345_my_app_object.view", "crm.app.objects.a12345_my_app_object.create", "crm.app.objects.a12345_my_app_object.edit", "crm.app.schemas.a12345_my_app_object.read", "crm.app.objects.a12345_my_app_object.merge", "crm.app.objects.a12345_my_app_object.delete", "crm.app.schemas.a12345_my_app_object.properties.write" ], "optionalScopes": [], "conditionallyRequiredScopes": [] }, ``` > [!WARNING] > > ### Remarque : > >
    >
  • > Les clients ne pourront voir votre objet d'application que si `schemas.read` > le domaine est inclus dans les paramètres de votre application et est demandé pendant la > flux OAuth d'installation/réautorisation. Il est fortement recommandé d'inclure > tous les domaines d'objet d'application dans vos paramètres, mais `schemas.read` est obligatoire pour > clients pour y accéder. Par exemple, pour un `appId` de `12345`, > que vous incluriez `crm.app.schemas.a12345_MY_APP_OBJECT.read` comme domaine > obligatoire. >
  • > >
  • > En fonction de l'application testée (prototype, développement, préparation, > production), vous devrez faire attention à l'endroit où vous ajoutez votre champ d'application > définitions. Bien que le déploiement d'une application de production ne soit pas encore pris en charge pendant > cette phase de la version bêta privée, il est généralement plus sûr d'inclure > domaines lorsque `conditionallyRequiredScopes` vous êtes prêt pour la production. > Découvrez-en davantage sur ces types de domaines dans [l'application publique > documentation](/docs/apps/legacy-apps/public-apps/overview#scope-types) >
  • >
* Lorsque vous avez terminé d'ajouter ces domaines et que vous avez enregistré vos modifications, exécutez les commandes suivantes pour valider vos modifications dans la plateforme : ```shell theme={null} hs project upload hs project deploy ``` Une fois le déploiement terminé, votre application et l'objet application correspondant sont maintenant prêts à être testés avec un compte installé. **8. Créez un compte de test de développeur (facultatif) et installez votre application** Si vous n'avez pas encore de [compte test](/docs/getting-started/account-types#developer-test-accounts), vous pouvez en créer un dans HubSpot : * Accédez à **Comptes de test** dans le menu de navigation *Développement*, puis cliquez sur **Créer un compte de test de développeur**. Suivez les instructions pour créer votre nouveau compte de test. * Dans le menu latéral de gauche, accédez à **Projets**, cliquez sur le **nom** de votre nouveau projet, puis sur **UID** de votre application dans la liste des composants. * Dans l'onglet *Authentification*, copiez le lien d'installation de votre application. * Utilisez ce lien pour installer l'application dans votre compte de test de développeur. * Ouvrez le compte test et accédez à la page *Applications connectées*, où vous devriez voir la liste de votre application installée. * Dans votre compte de test, accédez à **CRM** > **Contacts**, puis cliquez sur le menu déroulant Objet CRM et confirmez que votre objet d'application est disponible. * Vous pouvez ensuite confirmer que votre définition de schéma est conforme à votre fichier de configuration en créant une nouvelle fiche d'informations de votre objet d'application. ![app-object-available-in-crm](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/test-app-object-in-developer-test-account-1.png) **9. Accès aux données par programmation à l'aide de l'API d'objets HubSpot** Maintenant que vous avez créé votre objet d'application et que vous l'avez testé dans un compte de test de développeur, vous pouvez utiliser le jeton d'accès OAuth associé au compte de test installé pour effectuer des demandes de mise à jour des données du compte directement via l'API d'objets. Lisez [l'API des objets](/docs/guides/crm/using-object-apis) pour plus d'informations sur l'API, mais toutes les demandes spécifiques à votre objet d'application suivront les mêmes conventions que les autres objets standard dans HubSpot. Vous devrez utiliser `objectTypeId` ou `fullyQualifiedName` de l'objet de votre application comme paramètre de chemin d'accès `objectType` dans votre demande. Par exemple, le bloc de code suivant montre comment effectuer une demande cURL pour créer une nouvelle fiche d'informations de votre objet d'application : ```shell theme={null} curl --request POST \ --url https://api.hubapi.com/crm/v3/objects/ \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --data '{ "properties": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" } }' ``` Vous pouvez trouver le `objectTypeId` pour votre objet d'application en accédant à la page index des fiches d'informations : * Accédez à **CRM** > **Contacts** dans le compte de test de développeur sur lequel vous avez installé votre application. * Cliquez sur le **menu déroulant** en haut de la page et sélectionnez **l'objet de votre application**. * `objectTypeId` apparaîtra dans l'URL située entre les parties `/objects//views`. ## Étapes suivantes Consultez la [documentation de référence](/docs/apps/developer-platform/add-features/app-objects/reference) pour connaître les prochaines étapes à suivre afin d'utiliser les objets d'application avec différentes fonctionnalités de plateforme de développement : * [Configurer une carte d'application](/docs/apps/developer-platform/add-features/app-objects/reference#app-card-schema) * [Configurer les abonnements au webhook](/docs/apps/developer-platform/add-features/app-objects/reference#webhooks-component-definition) * [Activer les associations avec d'autres types d'objets du CRM](/docs/apps/developer-platform/add-features/app-objects/reference#app-object-associations) # Référence des objets d'application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/app-objects/reference Informations de référence pour la création d'objets d'application, y compris les options de configuration pour les applications, les objets d'application, etc. > [!NOTE] > > L'utilisation de cette fonctionnalité nécessite une autorisation de HubSpot. Si vous souhaitez demander l'accès aux objets d'application ou si vous souhaitez en savoir plus sur les fonctionnalités, veuillez soumettre [ce formulaire](/docs/apps/developer-platform/add-features/app-objects/overview). Découvrez ci-dessous des informations de référence pour les fonctionnalités d'application de la plateforme de développement avec des objets d'application, y compris des définitions de fichier de configuration, des détails de domaines, etc. ## Structure du projet * Tous les composants du projet doivent se trouver dans le répertoire indiqué `src` dans le fichier de configuration `hsproject.json`. * Toutes les fonctionnalités et tous les composants de l'application doivent se trouver dans le répertoire `app/`. * Les associations d'objets d'application sont définies dans le répertoire `app-object-associations/`. * Les abonnements Webhook sont définis dans le répertoire `webhooks/`. * Les actions de workflow personnalisées sont définies dans le répertoire `workflow-actions/`. * Toutes les caractéristiques des cartes doivent se trouver dans le répertoire `cards/`. * Toutes les instances de composants et de fonctionnalités sont déclarées à l'aide de fichiers `*-hsmeta.json`. Vous devez faire précéder le nom du fichier d'un élément significatif (par exemple, `my-app-hsmeta.json`). Ces fichiers doivent se trouver à la racine de leur dossier respectif (par exemple, `app/my-app-hsmeta.json`, `cards/my-card-hsmeta.json`). L'exemple de structure de répertoire ci-dessous décrit toutes les fonctionnalités disponibles. ```shell theme={null} my-folder/ ├── hsproject.json ├──src │ ├── app/ │ │ └── app-hsmeta.json/ │ │ └── app-objects/ │ │ └── my-app-object-hsmeta.json │ │ └── app-object-associations/ │ │ └── my-app-object-association-hsmeta.json │ │ └── webhooks/ │ │ └── webhooks-hsmeta.json │ │ └── cards/ │ │ └── my-app-card-hsmeta.json │ │ └── MyCard.jsx └── ``` > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/tree/main/projects/app-object-getting-started-template)** ## Objets de l'application Pour créer un objet d'application, incluez un répertoire de composants `app-objects` dans le projet, ainsi qu'un fichier de configuration. ```shell theme={null} ... ├──src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── app-objects/ │ │ └── my-app-object-hsmeta.json └── ``` Voici les options de configuration disponibles pour `*-object-hsmeta.json`. ```json theme={null} { "uid": "car-app-object", "type": "app-object", "config": { "name": "CAR", "appPrefix": "Vroom", "description": "An automobile in our warehouse.", "singularForm": "Car", "pluralForm": "Cars", "primaryDisplayLabelPropertyName": "model", "secondaryDisplayLabelPropertyNames": ["make"], "settings": { "hasRecordPage": true, "allowsUserCreatedRecords": true, "hasEngagements": true }, "properties": [ { "type": "string", "fieldType": "text", "name": "model", "label": "Model", "description": "The model of the car" }, { "type": "enumeration", "fieldType": "select", "name": "make", "label": "Make", "description": "The manufacturer of the car.", "options": [ { "label": "Ford", "value": "ford", "displayOrder": 0 }, { "label": "Toyota", "value": "toyota", "displayOrder": 1 }, { "label": "Chevrolet", "value": "chevrolet", "displayOrder": 2 } ] } ] } } ``` > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/app-object-getting-started-template/src/app/app-objects/car-object-hsmeta.json)** Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique pour l'objet application. Doit être globalement unique au sein du projet. | | `type`\* | Chaîne | le type de composant. Doit correspondre au nom du dossier parent (`app-object`). | | `name`\* | Chaîne | le nom de l'objet de votre application. Utilisez le nom approuvé que vous avez reçu dans la confirmation de votre application approuvée. Doit être en majuscule snake case (`MY_OBJECT_NAME`). | | `appPrefix` | Chaîne | une chaîne qui précède le nom singulier ou pluriel de l'objet dans l'interface utilisateur de HubSpot pour aider à le différencier des autres objets. Dans cet exemple, les éléments `appPrefix` de `Vroom` et `singularForm` de `Car` entraînent l'affichage de « Voiture Vroom » dans l'interface utilisateur. | | `description`\* | Chaîne | la description de l'objet, qui s'affichera dans HubSpot. | | `singularForm`\* | Chaîne | la forme singulière du nom d'objet. | | `pluralForm`\* | Chaîne | la forme plurielle du nom d'objet. | | `properties`\* | Tableau | une liste des propriétés CRM définies pour l'objet. Les propriétés sont définies en utilisant les mêmes champs que [l'API des propriétés](/docs/api-reference/crm-properties-v3/guide). Les propriétés résultantes auront automatiquement `a_` ajouté à elles (par exemple, `a12345_make`) lors de la création. Vous ne devez pas inclure le préfixe dans le fichier de configuration. | | `primaryDisplayLabelPropertyName`\* | Chaîne | le nom de la propriété qui doit être utilisée comme [propriété d'affichage principale](https://knowledge.hubspot.com/object-settings/create-custom-objects#:~:text=object%27s%20singular%20name.-,Primary%20display%20property,-%3A%20the%20property%20used). La valeur doit correspondre au nom fourni dans la liste `properties` (autrement dit, elle ne doit pas inclure le préfixe généré `a_`). | | `secondaryDisplayLabelPropertyNames`\* | Tableau | la liste des propriétés qui doivent être utilisées comme [propriétés d'affichage secondaires](https://knowledge.hubspot.com/object-settings/create-custom-objects#:~:text=Secondary%20properties%3A). La valeur doit correspondre au nom fourni dans la liste `properties` (autrement dit, elle ne doit pas inclure le préfixe généré `a_`). | | `settings`\* | Objet | un objet contenant des paramètres d'objet. | | `hasRecordPage`\* | Booléen | indique si des pages de fiches d'informations existent pour les instances de cet objet d'application. Si défini sur `false`, la page d'index existera toujours, mais elle ne comprendra pas de liens vers des pages de fiches d'informations individuelles. | | `allowsUserCreatedRecords`\* | Booléen | si les utilisateurs finaux pourront créer des fiches d'informations à l'aide de l'objet. Lorsque la valeur est définie sur `false`, les utilisateurs ne pourront pas créer de fiches d'informations dans HubSpot | | `hasEngagements`\* | Booléen | si les fiches d'informations d'objet d'application prennent en charge des activités/engagements. Lorsque définie sur `false`, les pages de fiches d'informations d'objet d'application n'incluront aucune fonctionnalité d'engagement, comme l'onglet d'activité ou les filtres de chronologie liés à l'activité. | > [!NOTE] > > Le nom entièrement qualifié (FQN) pour votre objet d'application sera `a_`. Par exemple : si votre `appId` est `16858319` et que le nom d'objet de l'application est `CARS`, alors le FQN serait `a16858319_CARS`. Vous utiliserez le FQN lors de la définition des valeurs de domaine pour les vos objets d'application. ## Schéma de l'application Pour créer un objet d'application, incluez un fichier de configuration `app-hsmeta.json` dans le répertoire `app`. ```shell theme={null} ... ├──src │ ├── app/ │ │ └── app-hsmeta.json/ └── ``` Voici les options de configuration disponibles pour `app-hsmeta.json`. > **Résumé des modifications** > > Prenez note des modifications suivantes pour les fichiers de configuration des cartes d'application : > > * Ajout des champs de premier niveau `uid`, `type` et `config`. > * Champ `extensions` supprimé. > * Champ `distribution` ajouté. ```json theme={null} { "uid": "app_object_poc_app", "type": "app", "config": { "description": "An example to demonstrate how to build an app with an app object on developer projects.", "name": "my first app object app", "distribution": "marketplace", "auth": { "type": "oauth", "redirectUrls": ["http://localhost:3000/oauth-callback"], "requiredScopes": ["crm.objects.contacts.read", "crm.objects.contacts.write"], "optionalScopes": [], "conditionallyRequiredScopes": [] }, "permittedUrls": { "fetch": ["https://api.hubapi.com"], "iframe": [], "img": [] }, "support": { "supportEmail": "support@example.com", "documentationUrl": "https://example.com/docs", "supportUrl": "https://example.com/support", "supportPhone": "+18005555555" } } } ``` > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/app-object-getting-started-template/src/app/app-hsmeta.json)** ### Schéma d'application \*champs -hsmeta.json Les champs marqués par \* sont requis | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour l'application. Doit être globalement unique au sein du projet. Peut être n'importe quelle chaîne jusqu'à 64 caractères. Les caractères peuvent être en majuscules ou en minuscules, et peuvent inclure des chiffres, des tirets bas (`_`), des tirets (`-`) et des points (`.`). | | `type`\* | Chaîne | le type de composant. Doit correspondre au nom du dossier parent (`app`). | | `description`\* | Chaîne | une description de ce que l'application fait pour l'utilisateur qui l'installe. Peut être n'importe quelle chaîne jusqu'à 8 192 caractères. | | `name`\* | Chaîne | le nom de l'application, qui s'affichera dans HubSpot. Peut être n'importe quelle chaîne jusqu'à 200 caractères. Ne doit pas commencer ou se terminer par un espace. | | `distribution`\* | Chaîne | la méthode de distribution de l'application. Doit être défini sur `marketplace` pour que l'application soit éligible au listing du marketplace des applications. | | `auth`\* | Objet | un objet contenant les détails de la méthode d'authentification de l'application. Voir le [tableau des authentifications](#auth-fields) pour plus de détails. | | `permittedUrls` | Objet | un tableau contenant les URL que l'application est autorisée à appeler. Les URL doivent utiliser le schéma HTTPS et contenir une [autorité](https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL#authority), suivie d'un préfixe de chemin facultatif si nécessaire. | | `supportEmail` | Chaîne | une adresse e-mail valide que les utilisateurs peuvent contacter pour obtenir de l'aide. | | `documentationUrl` | Chaîne | l'URL externe vers laquelle les utilisateurs peuvent accéder pour obtenir de la documentation utile. Doit utiliser HTTPS. | | `supportUrl` | Chaîne | l'URL externe vers laquelle les utilisateurs peuvent accéder pour obtenir une assistance supplémentaire. Doit utiliser HTTPS. | | `supportPhone` | Chaîne | le numéro de téléphone que les utilisateurs peuvent contacter pour obtenir de l'aide. Doit commencer par un signe plus (`+`). | ### champs d'authentification Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `type`\* | Chaîne | le type d'authentification. Doit être défini sur `oauth` pour que l'application utilise l'authentification OAuth. | | `redirectUrls`\* | Tableau | une liste des URL vers lesquelles le processus OAuth est autorisé à rediriger. Chaque application doit avoir au moins une URL de redirection d'authentification et doit utiliser HTTPS. La seule exception est `http://localhost`, qui est autorisée pour les tests. | | `requiredScopes`\* | Tableau | une liste des domaines requis de votre application. Chaque application doit inclure au moins un domaine et l'utilisateur qui a procédé à l'installation doit accorder ces domaines pour installer l'application avec succès. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | | `optionalScopes` | Tableau | une liste des domaines facultatifs de votre application. Ces domaines peuvent être exclus de l'autorisation lors de l'installation si le compte ou l'utilisateur qui installe l'application ne dispose pas des autorisations appropriées. Dans ce cas, le domaine ne sera pas inclus dans le jeton d'actualisation ou le jeton d'accès qui en résulte. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | | `conditionallyRequiredScopes` | Tableau | une liste des domaines requis uniquement lorsqu'ils sont inclus dans le paramètre de requête `scope` de l'URL d'installation. [Découvrez-en davantage sur les domaines ci-dessous](#scopes). | ### Domaines Dans le champ `auth` d'un fichier de configuration d'application, vous pouvez indiquer trois [types de domaines](/docs/apps/legacy-apps/public-apps/overview#scope-types) : les domaines requis, les domaines conditionnellement requis et les domaines facultatifs. À ce stade de la version bêta, vous devez inclure uniquement les domaines d'objet de votre application en tant que `conditionallyRequiredScopes`. Cela vous permettra de réserver vos nouvelles fonctionnalités à des clients spécifiques en incluant les domaines d'objet d'application dans l'URL d'installation. Les domaines d'objet d'application utilisent le format suivant : `crm.app.schemas..read` Par exemple, pour un objet application avec le FQN `a16858319_cars`, le domaine d'application `read` serait : `crm.app.schemas.a16858319_cars.read`. Au minimum, votre application doit inclure le domaine ci-dessus `read` pour permettre aux clients d'accéder à l'objet. Il est recommandé d'inclure tous les domaines d'application dans votre application, comme indiqué ci-dessous. ```json theme={null} "auth": { "type" : "oauth", "redirectUrls": ["http://localhost:3000/oauth-callback"], "requiredScopes": [ "crm.objects.contacts.read", "crm.objects.contacts.write", "crm.app.objects.a12345_MY_APP_OBJECT.view", "crm.app.objects.a12345_MY_APP_OBJECT.create", "crm.app.objects.a12345_MY_APP_OBJECT.edit", "crm.app.schemas.a12345_MY_APP_OBJECT.read", "crm.app.objects.a12345_MY_APP_OBJECT.merge", "crm.app.objects.a12345_MY_APP_OBJECT.delete", "crm.app.schemas.a12345_MY_APP_OBJECT.properties.write" ], "optionalScopes": [], "conditionallyRequiredScopes": [] }, ``` Pour obtenir une liste complète des domaines disponibles, consultez la [référence des domaines](/docs/apps/legacy-apps/authentication/scopes). ## Définition du composant Webhook Pour définir un ensemble d'abonnements au webhook pour votre application, incluez un répertoire `webhooks` dans le projet ainsi qu'un fichier de configuration `*-hsmeta.json`. ```shell theme={null} ├──src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── webhooks/ │ │ └── webhooks-hsmeta.json └── ``` Vous trouverez ci-dessous les options de configuration disponibles pour le fichier `*-hsmeta.json`. ```json theme={null} { "uid": "webhooks", "type": "webhooks", "config": { "settings": { "targetUrl": "https://example.com/webhook", "maxConcurrentRequests": 10 }, "subscriptions": { "crmObjects": [ { "subscriptionType": "object.creation", "objectType": "contact", "active": true }, { "subscriptionType": "object.propertyChange", "objectType": "car_app_object", "propertyName": "carProperty", "active": true } ], "legacyCrmObjects": [ { "subscriptionType": "contact.propertyChange", "propertyName": "lastname", "active": true }, { "subscriptionType": "contact.deletion", "active": true } ], "hubEvents": [ { "subscriptionType": "contact.privacyDeletion", "active": true } ] } } } ``` ### Webhook \*champs -hsmeta.json Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour le composant du webhook. | | `type`\* | Chaîne | le type de composant, qui devrait être `webhooks` dans ce cas. | | `settings`\* | Objet | un objet qui spécifie deux champs : `targetUrl`, qui est l'URL publique que HubSpot peut appeler l'endroit où les charges utiles de l'événement seront livrées, et `maxConcurrentRequests`, qui est le seuil supérieur des demandes HTTP que HubSpot effectuera dans une période donnée. | | `subscriptions`\* | Objet | un objet qui spécifie les types d'abonnements auxquels votre application s'abonnera. | | `crmObjects` | Tableau | un tableau contenant des définitions d'abonnement aux événements. Il s'agit du tableau standard à inclure, qui doit être utilisé pour tous les événements dans le nouveau format (`object.*`). Les types d'abonnement de webhook classiques doivent plutôt être inclus dans les tableaux `legacyCrmObjects` et `hubEvents`, en fonction de l'événement. | | `legacyCrmObjects` | Tableau | un tableau contenant les types d'abonnements classiques, tels que `contact.creation` et `deal.deletion`. | | `hubEvents` | Tableau | un tableau contenant les types `contact.privacyDeletion` d'abonnements classiques et `conversation.*` | Pour chaque objet `subscription`, les champs suivants peuvent être indiqués, en fonction du type de définition d'abonnement auquel vous êtes abonné (c'est-à-dire `crmObjects`, `legacyCrmObjects` ou `hubEvents`) ou selon que vous êtes abonné à une modification de propriété spécifique (par exemple, `contact.propertyChange`). | Champ | Type | Description | | - | - | - | | `subscriptionType` | Chaîne | le type d'événement auquel l'abonné est abonné. | | `objectType` | Chaîne | pour les abonnements indiqués dans le tableau `crmObjects`, cela indique l'objet CRM auquel votre application est abonnée. Pour vous abonner aux modifications apportées à un objet d'application, incluez le nom de votre objet d'application pour ce champ (par exemple, `car_app_object`). | | `propertyName` | Chaîne | pour les abonnements de modification de propriété, cela indique la propriété qui déclenchera l'événement webhook. | | `active` | Booléen | si des événements webhook seront déclenchés pour cet abonnement. | ## Schéma de carte d'application Pour créer une carte d'application qui apparaît sur une page de fiches d'informations d'un objet d'application, incluez un répertoire de composant `cards` dans le projet, ainsi qu'un fichier de configuration. ```shell theme={null} ├──src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── cards/ │ │ └── my-app-card-hsmeta.json │ │ └── MyCard.jsx └── ``` * Vérifiez que vous avez exécuté `hs project upload` après avoir créé votre composant d'objet d'application et les fichiers de configuration associés. * Dans votre fichier `my-app-card-hsmeta.json`, ajoutez l'UID de votre objet d'application au tableau `objectTypes` (par exemple, `"app_object_uid"` dans cet exemple). Chacun des champs disponibles dans le fichier `.json` est détaillé dans le [tableau](#app-card-*-hsmeta.json-fields) ci-dessous. > **Résumé des modifications** > > Prenez note des modifications suivantes pour les fichiers de configuration des cartes d'application : > > * Ajout des champs de premier niveau `uid`, `type` et `config`. > * Le champ `module` a été renommé `entrypoint`. > * Le champ `title` a été renommé `name`. > * Le champ `objectTypes` a été simplifié pour accepter un tableau de chaînes. ```json theme={null} { "uid": "my-app-card", "type": "card", "config": { "name": "My app card", "description": "An example description of the card, which lives on contact records.", "previewImage": { "file": "./preview.png", "altText": "A short description of the preview image" }, "entrypoint": "/app/cards/MyCard.jsx", "location": "crm.record.tab", "objectTypes": ["contacts", "app_object_uid"] } } ``` * Après avoir enregistré les modifications apportées à votre fichier `example-card-hsmeta.json`, exécutez `hs project upload`. Les cartes sont ajoutées automatiquement à la vue par défaut pour les objets d'application. Si la carte ne s'affiche pas automatiquement, découvrez comment [ajouter des cartes aux fiches d'informations CRM](/docs/apps/developer-platform/add-features/ui-extensibility/app-cards/create-an-app-card#view-the-card-in-hubspot). > **[Afficher un exemple sur GitHub](https://github.com/robrown-hubspot/hubspot-project-components-ua-app-objects-beta/blob/main/projects/app-object-getting-started-template/src/app/app-hsmeta.json)** ### App card \*champs -hsmeta.json Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | l'identifiant unique de la carte. Il peut s'agir de n'importe quelle chaîne, mais doit identifier la carte de manière significative. HubSpot identifiera la carte par cet ID afin que vous puissiez modifier le titre de la carte sans supprimer les données historiques ou d'état, telles que la position sur la fiche d'informations CRM. | | `type` | Chaîne | le type de composant, qui devrait être `card` dans ce cas. | | `config` | Objet | un objet contenant des détails de configuration. | | `name`\* | Chaîne | le titre de la carte, tel qu'il apparaît dans l'interface utilisateur de HubSpot. | | `description` | Chaîne | une description de la carte. | | `previewImage` | Objet | un objet contenant les champs `file` et `altText`. Le champ `file` est le chemin relatif vers l'image d'aperçu. Les extensions de fichier valides sont png, jpeg, jpg ou gif. La taille maximale du fichier est de 5.0 Mo. Le champ `altText` est une courte description de l'image. | | `entrypoint`\* | Chaîne | le chemin du fichier du code React front-end de la carte. | | `location`\* | `crm.record.tab` \| `crm.record.sidebar` \| `helpdesk.sidebar` | Emplacement de la carte dans l'interface utilisateur de HubSpot En savoir plus sur [l'emplacement de l'extension](/docs/apps/developer-platform/add-features/ui-extensibility/app-cards/reference#extension-location). | | `objectTypes`\* | Tableau | les types de fiches d'informations CRM sur lesquels la carte apparaîtra. | ## Associations d'objets d'application Pour activer les associations entre votre objet application et d'autres objets CRM, incluez un répertoire de composants `app-object-associations` dans le projet, ainsi qu'un fichier de configuration. ```shell theme={null} ├── src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── app-object-associations/ │ │ └── my-app-object-association-hsmeta.json └── ``` Voici les options de configuration d'objet d'application disponibles (`*-association-hsmeta.json`). ```json theme={null} { "uid": "car_to_contact_association", "type": "app-object-association", "config": { "firstObjectType": "car-app-object", "secondObjectType": "CONTACT" } } ``` ### Association \*champs -association-hsmeta.json Les champs marqués par \* sont requis. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour l'application. Doit être globalement unique au sein du projet. | | `type`\* | Chaîne | le type de composant. Doit correspondre au nom du dossier parent (`app-object-association`). | | `config`\* | Objet | un objet contenant la configuration de l'association d'objets. | | `firstObjectType`\* | Chaîne | le premier objet de l'association. Il peut s'agir d'un objet d'application ou d'un objet CRM HubSpot. Les objets d'application sont désignés par leur `uid` indiqué dans leur fichier source. Les objets standards sont désignés par leur `fullyQualifiedName`. L'association résultante sera bidirectionnelle, de sorte que l'ordre de ces valeurs de champ est arbitraire. | | `secondObjectType`\* | Chaîne | le deuxième objet de l'association. Voir `firstObjectType` pour plus de détails. | # Configurer un abonnement au webhook (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/configure-webhooks Découvrez comment définir un abonnement webhook sur la dernière version de la plateforme de développement (BÊTA). Pour définir un ensemble d'abonnements webhook pour une application sur la nouvelle plateforme de développement, incluez un répertoire `webhooks` dans le projet ainsi qu'un fichier de configuration `*-hsmeta.json`. ## Structure du répertoire ```shell theme={null} ├──src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── webhooks/ │ │ └── webhooks-hsmeta.json └── ``` ## Configuration du Webhook Vous trouverez ci-dessous les options de configuration disponibles pour le fichier `*-hsmeta.json`. ```json theme={null} { "uid": "webhooks", "type": "webhooks", "config": { "settings": { "targetUrl": "https://example.com/webhook", "maxConcurrentRequests": 10 }, "subscriptions": { "crmObjects": [ { "subscriptionType": "object.creation", "objectType": "contact", "active": true } ], "legacyCrmObjects": [ { "subscriptionType": "contact.propertyChange", "propertyName": "lastname", "active": true }, { "subscriptionType": "contact.deletion", "active": true } ], "hubEvents": [ { "subscriptionType": "contact.privacyDeletion", "active": true } ] } } } ``` Les champs marqués par sont \* obligatoires. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour le composant du webhook. | | `type`\* | Chaîne | le type de composant, qui devrait être `webhooks` dans ce cas. | | `settings`\* | Objet | un objet qui spécifie deux champs : `targetUrl`, qui est l'URL publique que HubSpot peut appeler l'endroit où les charges utiles de l'événement seront livrées, et `maxConcurrentRequests`, qui est le seuil supérieur des demandes HTTP que HubSpot effectuera dans une période donnée. | | `subscriptions`\* | Objet | un objet qui spécifie les types d'abonnements auxquels votre application s'abonnera. | | `crmObjects` | Tableau | un tableau contenant des définitions d'abonnement aux événements. Il s'agit du tableau standard à inclure, qui doit être utilisé pour tous les événements dans le [nouveau format](/docs/apps/legacy-apps/public-apps/create-generic-webhook-subscriptions) (`object.*`). [Les types d'abonnement de webhook classiques](/docs/api-reference/webhooks-webhooks-v3/guide#webhook-subscriptions) doivent plutôt être inclus dans les tableaux `legacyCrmObjects` et `hubEvents`, en fonction de l'événement. | | `legacyCrmObjects` | Tableau | un tableau contenant les [types d'abonnements classiques](/docs/api-reference/webhooks-webhooks-v3/guide#webhook-subscriptions), tels que `contact.creation` et `deal.deletion`. | | `hubEvents` | Tableau | un tableau contenant les types `contact.privacyDeletion` d'abonnements classiques et `conversation.*` | Pour chaque objet `subscription`, les champs suivants peuvent être spécifiés, en fonction du type de définition d'abonnement auquel vous êtes abonné (c'est-à-dire `crmObjects`, `legacyCrmObjects` ou `hubEvents`) ou selon que vous êtes abonné à une modification de propriété spécifique (par exemple, `contact.propertyChange`). | Champ | Type | Description | | - | - | - | | `subscriptionType` | Chaîne | le type d'événement auquel l'abonné est abonné. | | `objectType` | Chaîne | pour les abonnements spécifiés dans le tableau `crmObjects`, cela spécifie l'objet CRM auquel votre application est abonnée. | | `propertyName` | Chaîne | pour les abonnements de modification de propriété, cela spécifie la propriété qui déclenchera l'événement webhook. | | `active` | Booléen | si des événements webhook seront déclenchés pour cet abonnement. | # Définir une action de workflow personnalisée (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/custom-workflow-actions Découvrez comment définir une action de workflow personnalisée sur la dernière version de la plateforme de développement (BÊTA). Pour définir une [action de workflow personnalisée](/docs/api-reference/automation-actions-v4-v4/guide) pour une application sur la nouvelle plateforme de développement, incluez un répertoire `workflow-actions` dans le projet ainsi qu'un fichier de configuration `*-hsmeta.json`. ## Structure du répertoire du projet ```shell theme={null} ├──src │ ├── app/ │ │ └── app-hsmeta.json │ │ └── ... │ │ └── workflow-actions/ │ │ └── custom-action-hsmeta.json └── ``` ## Définition d'actions de workflow personnalisées Vous trouverez ci-dessous les options de configuration disponibles pour le fichier `*-hsmeta.json`. ```json theme={null} { "uid": "simple_notification_action", "type": "workflow-action", "config": { "actionUrl": "https://example.com", "isPublished": false, "supportedClients": [ { "client": "WORKFLOWS" } ], "inputFields": [ { "typeDefinition": { "name": "message", "type": "string", "fieldType": "textarea" }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": true }, { "typeDefinition": { "name": "priority", "type": "enumeration", "fieldType": "select", "options": [ { "value": "high", "label": "High Priority" }, { "value": "normal", "label": "Normal Priority" }, { "value": "low", "label": "Low Priority" } ] }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": true } ], "labels": { "en": { "actionName": "My Custom Action (via Projects V2)", "actionDescription": "Sends a notification with custom message and priority level", "actionCardContent": "Send {{priority}} priority notification", "inputFieldLabels": { "message": "Notification Message", "priority": "Priority Level" }, "inputFieldDescriptions": { "message": "Enter the message to be sent in the notification", "priority": "Select the priority level for this notification" } } }, "objectTypes": ["CONTACT"] } } ``` Les champs marqués par sont \* obligatoires. | Champ | Type | Description | | - | - | - | | `uid`\* | Chaîne | un identifiant unique interne pour l'action de workflow. | | `type`\* | Chaîne | le type de composant, qui devrait être `workflow-action` dans ce cas. | | `actionUrl`\* | Chaîne | l'URL de webhook de l'API pour remettre une demande d'exécution de workflow. | | `isPublished` | Booléen | détermine si la définition est visible dans les comptes qui ont installé votre application. Par défaut, cette valeur est définie sur `false`. | | `supportedClients`\* | Tableau d'objets | indique les clients pris en charge par l'action de workflow personnalisée. Chaque objet du tableau doit avoir une clé client avec une valeur de chaîne indiquant le type de client (par exemple, `WORKFLOWS`). | | `inputFields` | Tableau | les valeurs pour les saisies que l'utilisateur a renseignées. | | `typeDefinition.name` | Chaîne | le nom ou la clé du champ de saisie. | | `typeDefinition.type` | Chaîne | le type de valeur que le champ de saisie doit attendre. | | `typeDefinition.fieldType` | Chaîne | le type de champ qui apparaît aux utilisateurs qui créent le workflow. | | `typeDefinition.options` | Tableau | pour les types d'énumération, ce champ fournit une liste d'options. Chaque option doit comporter une `value`, en fonction de l'entrée fournie par l'utilisateur, et un `label`, qui identifie l'option dans l'outil workflows. | | `inputFieldDependencies` | Tableau | une liste de règles qui définissent les relations entre deux entrées ou plus, en fonction de leur `dependencyType`. Découvrez-en davantage dans l'exemple [ici](/docs/api-reference/automation-actions-v4-v4/guide#example-%233). | | `labels.`\* | Chaîne | clé de paramètres régionaux qui correspond à la définition des paramètres régionaux. Un libellé anglais (`en`) et sa définition doivent être définis au minimum. | | `labels..inputFieldDescriptions` | Objet | un objet qui définit les détails des entrées de votre action. Dans l'exemple ci-dessus, cet objet comprend les champs `message` et `priority`. | | `labels..inputFieldOptionLabels` | Objet | un objet requis si votre ou vos champs de saisie disposent d'options. Fournit une carte des libellés d'options de champs de saisie, saisis par la valeur ou le libellé de l'option. | | `labels..outputFieldLabels` | Objet | un objet qui mappe les définitions de `outputFields` vers les libellés correspondants qui apparaissent dans l'outil workflows. | | `labels..actionName`\* | Chaîne | le nom de l'action tel qu'il apparaît dans le panneau *Sélectionner une action* de l'éditeur de workflows. | | `labels..appDisplayName`\* | Chaîne | le nom de la section du panneau *Sélectionner une action* où toutes les actions de l'application apparaissent. Si `appDisplayName` est défini pour plusieurs actions, la première trouvée sera utilisée. | | `labels..actionCardContent` | Chaîne | une description récapitulative affichée dans la carte de l'action. | | `labels..executionRules` | Objet | un objet qui regroupe les définitions de votre `executionRules` vers les messages qui apparaîtront pour les résultats d'exécution dans l'historique du workflow. | | `objectTypes` | Tableau | les types d'objets CRM disponibles avec lesquels cette action peut être utilisée. Si vide, l'action sera disponible pour tous les types d'objets. | | `outputFields` | Tableau | les valeurs résultantes de l'action qui peuvent être utilisées par des actions suivantes dans le workflow. Une action personnalisée peut avoir 0, 1 ou plusieurs résultats. | | `executionRules` | Objet | une liste des définitions que vous pouvez indiquer pour identifier les erreurs de votre service vers l'utilisateur qui crée le workflow. | # Connect external MCP servers to HubSpot agents (BETA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/mcp-registry # Configurez le SCIM pour votre application (BÊTA) Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/scim # Create and execute serverless functions in app cards Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/serverless-functions/create-serverless-functions # Serverless functions overview Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/serverless-functions/overview # Serverless functions reference Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/serverless-functions/reference # CrmActionButton Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-action-components/crm-action-button # CrmActionLink Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-action-components/crm-action-link # CrmCardActions Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-action-components/crm-card-actions # CRM action components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-action-components/overview # CrmAssociationPivot Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-association-pivot # CrmAssociationPropertyList Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-association-property-list # CrmAssociationStageTracker Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-association-stage-tracker # CrmAssociationTable Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-association-table # CrmDataHighlight Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-data-highlight # CrmPropertyList Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-property-list # CrmReport Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-report # CrmStageTracker Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-stage-tracker # CrmStatistics Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/crm-statistics # CRM data components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/crm-data-components/overview # BarChart | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/charts/bar-chart # LineChart | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/charts/line-chart # Charts overview | UI components Source: https://developers.hubspot.fr/docs/apps/developer-platform/add-features/ui-extensions/ui-components/standard-components/charts/overview # Exigences relatives au listing des outils d'agent Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/agent-tool-listing-requirements Consultez les exigences du marketplace des applications pour répertorier une application incluant des outils d'agent. Ci-dessous, découvrez les exigences supplémentaires pour répertorier une application avec des outils d'IA sur le marketplace des applications, ainsi que la manière de [la soumettre pour approbation](#submitting-tools-for-approval). ## Conditions relatives aux listings Toutes les applications créées pour le marketplace des applications sont soumises aux [exigences relatives aux listings sur le marketplace des applications](/docs/apps/developer-platform/list-apps/listing-your-app/app-marketplace-listing-requirements), et les applications certifiées sont soumises aux [exigences de certification du marketplace des applications](/docs/apps/developer-platform/list-apps/apply-for-certification/certification-requirements) supplémentaires. Si vous ajoutez un outil d'IA à une application destinée au marketplace des applications, vous devrez respecter certains critères supplémentaires. ### Sécurité et confidentialité * **Périmètres d'accès :** si un outil agent prend en charge un type d'objet, le domaine correspondant `.read` doit être ajouté à [la configuration de domaines requise de votre application](/docs/apps/developer-platform/build-apps/app-configuration#app-schema). Par exemple, si un outil prend en charge les transactions, l'application doit exiger le domaine `crm.objects.deals.read`. * **Entrées :** les outils doivent collecter uniquement les données entrées et le contexte nécessaires à leurs sorties. Par exemple : * Un outil « Résumer le contact » peut prendre en compte des entrées telles que les propriétés du contact et les données des réunions et tâches associées. * L'outil « Créer un devis » ne doit pas nécessiter de contexte sur l'historique des réunions d'un contact. * **Vulnérabilités spécifiques aux modèles de langage :** votre application sera évaluée en fonction des bonnes pratiques de sécurité liées aux risques spécifiques aux modèles de langage (par exemple, injection indirecte d'invites ou débridages). * **Données sensibles :** votre application ne doit pas accéder, demander ou utiliser [les domaines d'accès de données sensibles](/docs/api-reference/crm-sensitive-data/guide). ### Conformité Les outils des agents ne doivent pas prendre en charge des systèmes ou des cas d'utilisation à « risque inacceptable » ou « à haut risque » tels que décrits par la [législation européenne sur l'IA](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai). Par exemple : * **Acceptables :** outils « Résumer le contact » ou « Créer un devis » * **Inacceptable :** outils de « score des réseaux sociaux », de « décision d'embauche » ou de « prédiction de congé parental » ### Responsabilité * **Vidéo de test :** vous devez fournir une courte vidéo décrivant les tests fonctionnels que vous avez effectués (voir la section [Soumission de vos outils pour approbation](#submitting-your-tools-for-approval) ci-dessous). * **Tests fonctionnels :** vos outils doivent réussir tous les tests fonctionnels effectués par l'équipe qualité de l'écosystème HubSpot. ### Convivialité * **Dénomination :** les noms d'outils doivent mentionner la plateforme externe avec laquelle ils interagissent. Cependant, ils ne doivent pas inclure d'attribution à votre organisation dans le nom de l'outil, car l'étiquetage et l'association seront gérés par l'interface utilisateur du marketplace des applications. Par exemple : * **Acceptable :** « Envoyer une notification Slack » ou « Créer un devis Acme" * **Inacceptable :** « Envoyer une notification Slack par Alpha Co. » ou « Créer un devis Acme par Omega Inc" * **Copie :** les descriptions d'outils, les libellés, les options, les outils et les autres textes destinés aux clients sont clairs et intuitifs. ### Valeur À l'heure actuelle, les outils devraient faciliter les cas d'utilisation du front office (par exemple, le marketing, les ventes et le service client). Par exemple : * **Acceptables :** outils « Créer une facture Xero » et « Envoyer un cadeau Omega » * **Inacceptable :** un outil de « configuration HubSpot nouvelle embauche » *** ## Soumission de vos outils pour approbation Pour soumettre vos outils à approbation, effectuez les étapes suivantes avant les délais spécifiés. ### Du 2 au 9 juin 2025 (lancement de la bêta privée/point de contrôle #1) Entre le 2 et le 9 juin 2025, configurez votre compte de test de développeur. * Dans le compte développeur dans lequel vous créerez vos outils (celui converti en plateforme développeur le 2 juin), sélectionnez ou [créez un nouveau compte de test développeur](/docs/getting-started/account-types#developer-test-accounts). * Dans ce compte de test développeur, installez l'application de test qui contiendra vos outils. * Fournissez le HubID du compte de test de développeur au responsable du programme bêta de HubSpot. Il s'agit de l'ID surligné dans la capture d'écran ci-dessous, qui est distinct de votre ID de compte de développeur et de votre ID d'application de test. HubSpot ouvrira la porte au compte afin que vos outils puissent être utilisés avec les agents. ![L'ID du compte de test du développeur, qui se trouve dans la colonne Détails du compte de la page des comptes de test](https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer-test-account-id.png) ### 20 juin 2025 (point de contrôle bêta privé #2) D'ici le 20 juin 2025, fournissez des identifiants de test et testez vos outils pour permettre à l'équipe qualité de l'écosystème HubSpot de passer en revue et d'approuver vos outils. * **Fournir des identifiants de test :** * Remplissez le compte de test du développeur avec les données CRM nécessaires pour tester correctement les outils. * Invitez [ecosystem-quality-review@hubspot.com](mailto:ecosystem-quality-review@hubspot.com) en tant que [super administrateur](https://knowledge.hubspot.com/user-management/hubspot-user-permissions-guide#super-admin). * Sur votre plateforme externe, accordez à [ecosystem-quality-review@hubspot.com](mailto:ecosystem-quality-review@hubspot.com) toutes les autorisations nécessaires pour tester correctement les outils dans les workflows et les agents HubSpot. * **Tester les outils dans les comptes de test des développeurs non connectés :** à l'aide de votre application de test/développement, implémentez et testez les outils de bout en bout dans les workflows et les agents du compte de test du développeur. * **Vidéo test :** enregistrez une courte vidéo décrivant les tests fonctionnels que vous avez effectués et partagez-la avec [ecosystem-quality-review@hubspot.com](mailto:ecosystem-quality-review@hubspot.com). La vidéo de démonstration doit : * Durer au moins trois minutes * Inclure des descriptions audio (recommandé) ou textuelles * Inclure des descriptions des outils et des cas d'utilisation courants. * Décrivez les tests que vous avez effectués. L'équipe de qualité de l'écosystème doit être en mesure de reproduire ces étapes avec les données présentes dans le compte de test du développeur. Entre le 20 et le 25 juin 2025, l'équipe qualité de l'écosystème HubSpot analysera vos outils et vous fera part de votre premier feedback. Veuillez donner suite à ce feedback dès que possible, car quelques vérifications peuvent être nécessaires pour l'approbation finale. # Demander une certification d'application Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/apply-for-certification/applying-for-app-certification La certification d "La certification d'application permet aux utilisateurs de savoir que votre application a été examinée et approuvée par HubSpot, afin de créer une relation de confiance et d'attester de sa qualité pour les utilisateurs potentiels."; ### Qu'est-ce qu'une certification d'application ? La certification d'application implique que l'équipe qualité de l'écosystème HubSpot évalue votre application listée et confirme que celle-ci répond à [ces critères](https://developers.hubspot.com/docs) en matière de sécurité, de confidentialité, de fiabilité, de performances, de facilité d'utilisation, d'accessibilité et de valeur ajoutée. Une fois votre application approuvée, la page de listing de votre application affichera un badge « Application certifiée HubSpot ». ![](https://lh5.googleusercontent.com/CsSeky353aK17dYyX63spJgvA0INloEKH5z9zbmc2VgWG9QExch_b8skZ6ozu8K5H6Q3k0UWSScb2z16WwiIlkcx4Rhsmr0JexBRIYAJLoVNzb7D6DI3_296A5nIiAiolEkvhkl4) ### Pourquoi est-ce important ? Un badge de certification sur le listing d'application permet aux clients existants et potentiels de savoir que l'équipe qualité de l'écosystème HubSpot a examiné et approuvé votre application. Cela permet de symboliser la qualité et de créer une relation de confiance avec les utilisateurs de l'application. Découvrez-en davantage sur la création d'une relation de confiance avec le client grâce à la certification des applications [ici](https://developers.hubspot.com/blog/how-to-build-customer-trust-through-certification). ### Comment cela fonctionne-t-il ? Tout [partenaire d'application éligible](https://developers.hubspot.com/docs) peut demander la certification via son compte de développeur d'applications. L'équipe qualité de l'écosystème HubSpot examinera alors votre soumission et vous contactera afin de fournir un feedback ou de confirmer la certification de votre application. ### Mon application est-elle éligible à la certification ? Assurez-vous que votre application est éligible à la certification en consultant nos [critères de certification](https://developers.hubspot.com/docs). Vous ne pourrez pas demander la certification si votre application ne compte pas au moins 60 installations actives et ne présente pas le trafic d'API requis. Les installations actives sont le nombre de comptes de production uniques de HubSpot, non affiliés à votre organisation, affichant une activité d'application réussie au cours des 30 derniers jours. ### Comment demander la certification ? Vous ne pouvez envoyer qu'une seule application à la fois pour la certification. Si vous soumettez plusieurs applications pour certification en même temps, elles seront rejetées en fonction de l'ordre de soumission. Une fois votre application certifiée, vous pouvez en soumettre une autre pour certification. Pour demander une certification : * [Connectez-vous](https://knowledge.hubspot.com/fr/account-management/why-can-t-i-log-into-hubspot) à votre compte de développeur et accédez à **Marketplace** > **Listings d'applications**. * Passez le curseur de la souris sur l'application que vous souhaitez certifier et cliquez sur **Plus**. Ensuite, sélectionnez **Certifier l'application**. ![KB - App Certification](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/KB%20-%20App%20Certification.png) * Dans la boîte de dialogue, saisissez les informations suivantes : * **URL de la vidéo de démonstration sur YouTube :** saisissez l'**URL** de la vidéo de démonstration. Passez en revue les exigences nécessaires pour la vidéo de démonstration de l'application [ci-dessous](#app-demo). * **Informations d'identification de test :** saisissez des identifiants de test pour votre application afin que l'équipe de la qualité de l'écosystème HubSpot puisse évaluer ses fonctionnalités. * En bas, cliquez sur **Soumettre la demande de certification**. ![app-certification](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/app-certification.png) ### Conditions relatives à la vidéo de démonstration de l'application Des vidéos de démonstration aident l'équipe qualité de l'écosystème HubSpot à tester votre application. L'équipe n'examinera pas votre application à moins que vous ne soumettiez une vidéo de démonstration qui réponde à toutes les exigences. Les vidéos promotionnelles de vente et de marketing seront rejetées. HubSpot ne partagera et ne publiera pas vos vidéos de démonstration. La vidéo de démonstration doit : * Durer au moins trois minutes * Inclure des descriptions audio (recommandé) ou textuelles * Inclure des descriptions de l'objectif de votre application et des cas d'utilisation courants * Par exemple : « L'application Acme aide les représentants commerciaux et d'intégration à coordonner les CRM. Les transactions fermées gagnées dans n'importe quel CRM supporté par Acme peuvent automatiquement générer des tickets et des tâches d'onboarding dans HubSpot. » * Démontrer et décrire comment les nouveaux utilisateurs doivent : * Installer votre application. * Par exemple : «  Dans le listing d'application Acme sur le marketplace des applications de HubSpot, cliquez sur Installer l'application, sélectionnez votre CRM, saisissez vos identifiants, cliquez sur Terminé, sélectionnez votre compte HubSpot, vérifiez les domaines demandés, cliquez sur Connecter l'application. » * Configurer votre application après l'installation. * Par exemple : « Une fois l'application installée, sélectionnez un pipeline de tickets en accédant à Paramètres > Intégrations > Applications connectées > Application Fiction > Pipeline de tickets. Ensuite, configurez jusqu'à 10 tâches par défaut dans la section Modèles de tâches. Lorsque vous êtes prêt à activer la synchronisation, cliquez sur Synchronisation des tickets. » * Utiliser les fonctionnalités principales de votre application pour répondre aux cas d'utilisation courants. * Par exemple : « Pour chaque transaction conclue dans le CRM connecté, la fonctionnalité Synchronisation des tickets créera une fiche d'informations de ticket dans HubSpot avec tous les contacts associés et vos tâches configurées. Cela permet à votre équipe d'onboarding de se connecter immédiatement avec le nouveau client. » * Interagir avec votre application à l'intérieur de leur compte HubSpot pour répondre aux cas d'utilisation courants (le cas échéant). * Par exemple : « Pour créer des tickets d'intégration à partir de transactions HubSpot, utilisez l'action de workflow personnalisé Créer un ticket Fiction dans les workflows basés sur des transactions. Ces actions garantissent une personnalisation accrue par rapport aux paramètres de l'application pour d'autres CRM. » * Déconnecter votre application de leur compte HubSpot. * Désinstaller votre application à partir de leur compte HubSpot, en décrivant comment cela affecte les comptes et les données des utilisateurs HubSpot. **Conseil :** vous pouvez utiliser l'outil gratuit [Loom](https://www.loom.com/) pour enregistrer une vidéo de démonstration. ### Pourquoi le CTA de certification n'apparaît-il pas pour mon application ? Le bouton « Certifier l'application » apparaîtra uniquement si votre application est éligible. Veuillez consulter les [critères de certification](https://developers.hubspot.com/docs) ou contacter votre [responsable des partenaires](https://developers.hubspot.com/docs#related-resources) si vous avez des questions concernant l'éligibilité. ### Comment les utilisateurs savent-ils que mon application est certifiée ? Une fois votre application certifiée, votre listing du marketplace des applications présente un badge « Application certifiée HubSpot ». ![](https://lh3.googleusercontent.com/dw7gvVRNzsrmtUwOYBsLVhpAEniaAZ5Z-_G70J-Bzs596yGR_ZzLXJyw821l7FVCV53XmKoI1VVEFxX9YKAJxtI-4NjwvCJadqfWyLG8IyFOWROZ6k8Nx-1307mp6cE0T8p980-N) Lorsqu'un client passe le curseur de la souris sur le badge, il verra des informations supplémentaires sur la certification. ![](https://lh5.googleusercontent.com/CsSeky353aK17dYyX63spJgvA0INloEKH5z9zbmc2VgWG9QExch_b8skZ6ozu8K5H6Q3k0UWSScb2z16WwiIlkcx4Rhsmr0JexBRIYAJLoVNzb7D6DI3_296A5nIiAiolEkvhkl4) Trouvez votre **Gestionnaire de partenaires d'applications** et son adresse e-mail en vous connectant à votre compte de développeur et en accédant à **Marketplace des applications** > **Listings**. Passez le curseur sur votre application et cliquez sur **Plus** > **Afficher les détails du listing**. *** #### Documents associés [Conditions relatives à la certification des applications](https://developers.hubspot.com/docs) [Conditions relatives aux listings d'applications](https://developers.hubspot.com/docs) # Conditions relatives à la certification des applications Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/apply-for-certification/certification-requirements Découvrez ce dont les partenaires d 'Marketplace des applications | Exigences en matière de certification des applications'; "Découvrez ce dont les partenaires d'application ont besoin pour certifier leurs applications dans le marketplace des applications."; La certification d'application implique que l'équipe qualité de l'écosystème HubSpot évalue et confirme que votre [application listée](https://developers.hubspot.com/docs) répond aux exigences ci-dessous en matière de sécurité, de confidentialité, de fiabilité, de performances, de facilité d'utilisation, d'accessibilité et de valeur ajoutée. Les applications certifiées se distinguent sur le [marketplace des applications](https://ecosystem.hubspot.com/marketplace/apps) par leur réputation en termes de qualité et de fiabilité. Votre application bénéficiera également d'[avantages spéciaux](#certification-benefits) et recevra des commentaires constructifs de l'équipe qualité de l'écosystème HubSpot lors de l'évaluation de la certification de l'application. * Ces exigences sont sujettes à modification, car HubSpot apporte continuellement des améliorations au marketplace des applications et à l'écosystème HubSpot. HubSpot peut rejeter une demande de certification d'application à sa discrétion si elle ne répond pas aux normes établies. * HubSpot n'étudiera pas votre application si vous ne soumettez pas de vidéo de démonstration, comme indiqué lors de la [demande de certification de l'application.](https://developers.hubspot.com/docs) * Vous ne pouvez envoyer qu'une seule application à la fois pour certification. Si vous soumettez plusieurs applications pour certification en même temps, elles seront rejetées en fonction de l'ordre de soumission. * Les certifications d'application sont valables pour une durée de deux ans et doivent être renouvelées. Le non-renouvellement de votre certification entraînera la suppression de votre statut d'application certifiée. * Une notification sera envoyée 3 mois avant la date de renouvellement de la certification de votre application. * Si votre application ne répond plus aux normes, l'équipe qualité de l'écosystème HubSpot collaborera avec vous pendant 60 jours maximum pour résoudre les problèmes. ## Présentation Vous trouverez ci-dessous une présentation des exigences en matière de certification des applications. Pour plus de détails, consultez les [critères d'évaluation](#review-criteria). Votre application doit remplir les conditions suivantes : * Être associée à un seul ID d'application HubSpot. * Votre application publique listée doit être unique. Si vous avez déjà publié une application et que vous souhaitez la remplacer, vous devez mettre à jour l'application existante au lieu d'en publier une nouvelle. * Ne créez pas plusieurs applications qui répondent au même cas d'utilisation. Les applications ayant des fonctionnalités similaires et utilisant les mêmes API doivent être consolidées en une seule application. * Utiliser l'[authentification OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth) et tous les périmètres nécessaires. * Être associée à un [domaine vérifié](/docs/apps/legacy-apps/public-apps/overview). * Les ressources publiques associées à votre application doivent respecter les bonnes pratiques de sécurité. Votre application ne peut pas utiliser les [cartes CRM classiques](/docs/api-reference/crm-public-app-crm-cards-v3/guide), car elles ne sont plus prises en charge à compter du 16 juin 2025. Découvrez-en davantage sur cette annonce dans le [journal des modifications des développeurs HubSpot](https://community.hubspot.com/t5/Developer-Announcements/Deprecating-Support-for-Classic-Legacy-CRM-Cards/m-p/1153039#M1048). Consultez la [liste détaillée des exigences en matière de sécurité et de confidentialité](#security-privacy). L'activité de l'application est définie par les requêtes authentifiées par OAuth aux [API](/docs/api-reference/overview) de HubSpot et les [requêtes signées](/docs/apps/legacy-apps/authentication/validating-requests) provenant des [abonnements au webhook](/docs/api-reference/webhooks-webhooks-v3/guide) HubSpot et des extensions (par exemple : les requêtes de récupération de données des [cartes CRM](/docs/api-reference/crm-public-app-crm-cards-v3/guide)). Les installations actives sont le nombre de comptes de production uniques HubSpot, non affiliés à votre organisation, affichant une activité d'**application réussie** au cours des 30 derniers jours. ## Avantages de la certification Outre les [avantages liés au listing de votre application](https://www.hubspot.com/partners/app), les applications certifiées bénéficient des avantages suivants : * Badge « Application certifiée HubSpot » affiché sur son listing de marketplace des applications. * Visibilité supplémentaire dans le marketplace des applications de HubSpot : * Inclusion dans le filtre de recherche « Application certifiée HubSpot ». * Éligibilité pour l'inclusion dans des sélections du marketplace des applications. * Accès au badge « Application certifiée HubSpot » et aux images des réseaux sociaux pour partager l'obtention de la certification de l'application * Prise en compte favorable dans les initiatives de partenariat et d'amplification de HubSpot. ## Critères d'évaluation Pour obtenir la certification, votre application doit démontrer sa qualité en répondant à des mesures quantitatives et à des descripteurs qualitatifs en matière de sécurité, de confidentialité, de fiabilité, de performances, de facilité d'utilisation, d'accessibilité et de valeur ajoutée. Les exigences ci-dessous sont organisées par ces catégories et comprennent des exemples de commentaires constructifs que vous pouvez recevoir. ### Sécurité et confidentialité Votre application doit remplir les conditions suivantes : * Être associée à un seul ID d'application HubSpot. Votre application doit autoriser les requêtes d'API avec l'ID d'application HubSpot public (et l'[ID de client OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth)) associé à votre listing d'application. * Un listing ne doit pas rediriger vers une autre application publique ou privée. * Votre application publique répertoriée ne doit pas nécessiter le fonctionnement d'une autre application publique ou privée. * Être authentifiée par le [flux de code d'autorisation OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth) * Il est interdit de demander aux utilisateurs de copier et de coller les codes ou les jetons OAuth. Les utilisateurs doivent uniquement être invités à autoriser l'accès. * Les applications doivent demander, gérer et actualiser les jetons d'accès sans intervention de l'utilisateur. * Utiliser tous les paramètres [scope](/docs/apps/legacy-apps/authentication/working-with-oauth) nécessaires à l'installation (c'est-à-dire les paramètres obligatoires `scope` et `optional_scope`). * Activez [les paramètres de domaine avancés](/docs/apps/legacy-apps/public-apps/overview#configure-scopes) et sélectionnez tous les domaines requis, conditionnellement requis et facultatifs que l'application demande d'installer. * Les périmètres étrangers doivent être supprimés. * Si certains domaines ne s'appliquent qu'à un sous-ensemble de la base d'utilisateurs de votre application, ils doivent être inclus en tant que domaines conditionnellement requis ou facultatifs. * Être associée à un [domaine vérifié](/docs/apps/legacy-apps/public-apps/overview). * Vos ressources publiques seront évaluées en fonction des bonnes pratiques en matière de sécurité liées à des logiciels obsolètes et à diverses vulnérabilités et constatations des serveurs web. #### Exemple de feedback Votre application nécessite actuellement quatre domaines : `contacts`, `timeline`, `forms` et `content`. Selon nos journaux, cependant, il n'a effectué des requêtes aux API Contacts CRM et Événements de chronologie qu'au cours des 30 derniers jours. Étant donné que les domaines `forms` et `content` ne sont requis pour aucune de ces fonctions, veuillez les supprimer au besoin des paramètres de l'application pour réduire les autorisations que les utilisateurs doivent accepter. ### Fiabilité et performance Votre application doit remplir les conditions suivantes : * Avoir une bonne réputation : * Votre application doit répondre à toutes les dispositions en vigueur. * Elle doit n'avoir eu aucun rejet de certification au cours des six derniers mois. * Elle doit n'avoir eu aucune remontée de support non résolue avec des clients mutuels. * Utiliser des versions publiques stables des API et extensions de HubSpot. * Il est recommandé d'utiliser les versions publiques les plus récentes. * Les API de prévisualisation non documentées, bêta et de développeur sont considérées comme instables et ne doivent pas être utilisées dans votre application de production. * Si votre application utilise des API qui ne sont pas stables ou publiques, veuillez le signaler lors de l'examen de la certification ou à l'équipe responsable des partenaires d'application pour aborder les différentes solutions. * Maintenir un volume d'[activité](#activity) raisonnable de la part des comptes clients HubSpot non affiliés à votre entreprise. * Respecter les [directives d'utilisation de l'API](https://developers.hubspot.com/docs) et les bonnes pratiques, notamment : * Le respect des limites (c.-à-d. 100 requêtes entrantes toutes les 10 secondes par compte HubSpot connecté). * L'actualisation des jetons d'accès OAuth avant leur expiration. * La mise en cache des données pour les appels récurrents, le cas échéant. * L'utilisation d'API de lot et des abonnements au webhook pour réduire le volume de requête, le cas échéant. * L'utilisation d'API pour créer des propriétés, des workflows et des actions de workflow personnalisées au lieu d'exiger une action de la part de l'utilisateur. * Maintenir un taux de réussite moyen supérieur à **95 %** pour toutes les [activités](#activity) * Les requêtes débouchant sur des réponses d'erreur sont comptabilisées dans ce taux de réussite. * Certaines erreurs inévitables ou attendues peuvent être exclues lors du calcul des taux de réussite pour l'ensemble des [activités](https://developers.hubspot.com/docs#activity). * Votre application peut avoir une extension de navigateur pour offrir des fonctionnalités et une valeur supplémentaires aux clients : * Les extensions de navigateur ne doivent pas être créées spécifiquement pour l'interface utilisateur de HubSpot ou comme solution de contournement des API de HubSpot. * Les extensions du navigateur ne doivent pas proposer de capacités ou de composants dans l'interface utilisateur de HubSpot. * Les extensions d'interface utilisateur officiellement prises en charge (par exemple, les [cartes CRM](/docs/api-reference/crm-public-app-crm-cards-v3/guide) et les [actions de workflow personnalisées](/docs/api-reference/automation-actions-v4-v4/guide)) fournissent des expériences utilisateur plus cohérentes pour les clients. * Votre application fera l'objet d'une évaluation de sécurité supplémentaire si elle inclut une extension de navigateur. #### Exemples de feedback Le taux de réussite de l'API de votre application est inférieur au seuil de 95 % requis pour la certification. Nos journaux indiquent un taux de réussite de 83 % au cours des 30 derniers jours. La grande majorité de ces requêtes ont renvoyé des erreurs `429` de limitation. Pour réduire ce taux d'erreur, nous recommandons de limiter les requêtes à 100 requêtes toutes les 10 secondes pour chaque compte. Votre application génère des erreurs autour de la mise à jour des contacts via une adresse e-mail `undefined`, qui ne fonctionnera pas avec ce point de terminaison. Votre application doit ignorer ces requêtes si une fiche d'informations n'a pas d'adresse e-mail. Votre application effectue des requêtes avec des jetons OAuth expirés et reçoit des erreurs `401` avant d'actualiser le jeton. Pour minimiser ces erreurs, nous vous recommandons que votre application garde une trace du moment où les jetons expirent ou actualise les jetons avant de faire des requêtes. Si vous constatez des erreurs `401` pour toutes les requêtes et que vous ne pouvez pas actualiser le jeton d'accès, essayez de désinstaller l'application et cessez d'effectuer des requêtes pour le compte jusqu'à ce qu'un utilisateur réauthentifie votre application. Votre application génère des erreurs `403` provenant de la tentative d'utilisation de l'API des listes de contacts avec les comptes gratuits Marketing Hub, qui n'ont pas accès aux listes de contacts. Si votre application reçoit des erreurs `403` répétées en raison de l'absence des domaines appropriés, elle doit cesser d'effectuer des appels pour récupérer les listes de ce compte. Les abonnements au webhook de votre application échouent fréquemment avec les erreurs `500` et `503`. Assurez-vous que votre serveur peut gérer le volume de requêtes (actuellement limité à 150 par seconde) afin que les données des clients ne soient pas perdues. Votre application demande de nombreux contacts un par un au lieu de le faire par lots. Nous vous recommandons d'utiliser [des points de terminaison de lot](/docs/api-reference/crm-contacts-v3/guide) à la place. ### Facilité d'utilisation et accessibilité | Application * Votre application doit être [listée](https://developers.hubspot.com/docs) dans le [marketplace des applications](https://ecosystem.hubspot.com/marketplace/apps) HubSpot pendant au moins six mois. * Votre application doit présenter [des bonnes pratiques en termes de facilité d'utilisation](https://www.nngroup.com/articles/ten-usability-heuristics/). * L'installation et l'utilisation ne doivent pas générer de confusion ou de frustration pour les clients de HubSpot, ni impacter négativement l'expérience utilisateur principale de HubSpot. #### Exemple de feedback Votre application demande actuellement aux utilisateurs de configurer manuellement des actions webhook de workflow pour envoyer des SMS. Pensez à créer des actions de workflow personnalisées via l'application suffisamment flexibles pour s'adapter à de nombreux cas d'utilisation. ### Facilité d'utilisation et accessibilité | Listing de marketplace des applications Votre listing de marketplace des applications doit : * Décrire avec précision les fonctionnalités actuelles de votre application. * Si la fonctionnalité change selon le produit ou le niveau d'abonnement d'un utilisateur, que ce soit pour HubSpot ou votre solution, les différences doivent être clairement définies. * Votre listing doit contenir des informations claires et précises sur les tarifs, y compris un lien vers votre page tarifaire actuelle. * Si plusieurs forfaits prennent en charge votre application, le listing de marketplace des applications doit au moins inclure l'option la moins coûteuse. * Utiliser des données de substitution ou masquer des données pour ne pas afficher d'informations personnelles identifiables (PII). * Inclure : * Des aides visuelles informatives et actualisées, qui peuvent inclure des captures d'écran ou une vidéo. Reportez-vous à la page [Comment créer une excellente vidéo de démonstration d'application](https://www.hubspot.com/partners/apps/resources/how-to-make-a-great-app-demo-video) pour connaître les bonnes pratiques ainsi que des exemples de création d'une vidéo de démonstration. * Une URL de documentation de configuration à jour qui mène directement à un guide de configuration complet pour votre application. Vous pouvez consulter la [configuration requise complète pour la documentation d'installation](https://developers.hubspot.com/docs). Ce guide comprend également un exemple de modèle qui répond à toutes les exigences. * Exclure : * Toute donnée ou statistique, à moins qu'une étude de cas ne soit fournie en tant que ressource. #### Exemples de feedback Votre listing du marketplace des applications contient quelques détails spécifiques sur les fonctionnalités de votre application. Veuillez enrichir le listing avec des captures d'écran illustrant les fonctionnalités de l'application et incluant des descriptions plus détaillées des cas d'utilisation courants et des comportements au sein de l'application. Les clients HubSpot ont l'habitude d'effectuer un essai avant d'acheter de nouveaux produits et services. Pour cette raison, nous recommandons à votre application de proposer un essai gratuit ou une expérience d'inscription freemium. Certains partenaires d'applications qui n'ont pas de pages de tarification ou d'essais gratuits ont créé des « abonnements HubSpot », qui proposent aux clients mutuels une tarification transparente, une inscription sans contact et d'autres avantages. ### Facilité d'utilisation et accessibilité | Documentation de support La documentation de support pour votre application doit : * Figurer sur une URL en ligne publique (c'est-à-dire sans pare-feu ou connexion requise) et respecter les normes actuelles en matière d'accessibilité, de confidentialité et de RGPD. * Être à jour et cohérente avec la version actuelle de votre application. * Décrire clairement : * L'objet de l'application. * Comment installer votre application et connecter un compte HubSpot avec des captures d'écran de chaque étape, y compris l'écran d'approbation des périmètres d'accès. * Comment configurer l'application une fois installée. * Comment utiliser l'application, y compris les interactions manuelles et automatisées. * Comment déconnecter HubSpot de votre application. * Comment désinstaller votre application d'un compte HubSpot. * L'impact de la déconnexion et de la désinstallation sur les comptes et données HubSpot des utilisateurs. * Inclure des images. Les images contenant des captures d'écran de l'interface utilisateur HubSpot doivent être mises à jour et cohérentes avec notre [système de conception](https://canvas.hubspot.com/). * Les vidéos sont également recommandées, mais non obligatoires. Les vidéos doivent être mises à jour régulièrement et refléter la version actuelle de votre application. #### Exemple de feedback Le guide de configuration de votre application inclut une capture d'écran illustrant les domaines dont votre application a besoin pour l'installation. Cette capture d'écran n'indique pas le domaine `business-intelligence`, qui est sélectionné dans les paramètres de votre application. Veuillez mettre à jour la capture d'écran afin qu'elle reflète les domaines requis actuels. ### Valeur * Le nombre d'installations actives de votre application, sa conservation et les avis du marketplace des applications de HubSpot sont évalués comme des indicateurs de la valeur ajoutée de votre application pour les clients mutuels. * Votre application doit avoir au moins 60 installations [actives](#activity) uniques pour prétendre à la certification. Les comptes avec des installations doivent être non affiliés à votre organisation. Les comptes de test seront également exclus. * Si votre application compte moins de 60 installations actives, il vous sera demandé d'annuler la demande de certification. * Si votre application compte moins que les trois installations actives requises, votre application peut être supprimée du marketplace des applications. * Votre listing d'application doit recevoir des réponses de votre équipe pour tout commentaire négatif sur votre application. #### Exemple de feedback Votre application n'a pas maintenu au moins 60 installations actives au cours des six derniers mois. À ce titre, son statut de certification sera supprimé. Vous pourrez présenter une nouvelle demande de certification dans six mois. ## Processus d'évaluation de certification et de recertification d'application L'équipe qualité de l'écosystème HubSpot répond aux [demandes de certification d'application](https://developers.hubspot.com/docs) dans un **délai de 10 jours ouvrables**. L'ensemble du processus d'examen et de feedback sur l'application ne devrait pas prendre plus de **60 jours** à partir du moment où le feedback est partagé. Passez en revue les critères énumérés [ici](https://developers.hubspot.com/docs) pour fournir des informations d'identification de test pour votre application. Si votre application répond à toutes les exigences, elle obtiendra la certification et un badge « Application certifiée HubSpot » sera affiché aux clients et prospects sur le marketplace des applications. Votre application apparaîtra également lorsque les utilisateurs utiliseront le filtre « Application certifiée HubSpot ». Si votre application ne réussit pas l'évaluation, vous pourrez refaire une demande dans six mois. Après un an de certification, l'équipe qualité de l'écosystème HubSpot peut examiner votre application pour s'assurer qu'elle répond toujours aux exigences de certification rigoureuses. Si votre application ne répond plus à ces normes, l'équipe collaborera avec vous pendant soixante jours maximum pour résoudre les problèmes. Si votre application n'est pas conforme aux exigences de certification indiquées ci-dessus à tout moment, HubSpot peut lancer immédiatement un processus de recertification, même si votre application est certifiée depuis moins d'un an. Comme indiqué dans le [contrat relatif au Programme Partenaires d'applications](https://legal.hubspot.com/app-program-agreement), HubSpot se réserve également le droit d'annuler la publication de votre application à tout moment. ## Questions fréquentes > **Existent-ils des coûts associés à la certification de l'application ?** > > Non, HubSpot ne facture aucuns frais pour l'inscription ou la certification de vos applications sur le marketplace des applications, ni pour les installations générées via le marketplace des applications. Il n'y a pas de partage des revenus. L'équipe HubSpot est là pour vous aider à améliorer votre application. > **Serai-je informé lorsque mon application sera à nouveau éligible à la certification si elle a été rejetée par le passé ?** > > Non. Pour l'instant, aucune notification n'est activée pour vous informer si et quand vous pourrez présenter une nouvelle demande. Votre [gestionnaire de partenaires d'application](#app-partner-manager) serait la meilleure ressource à contacter pour demander si vous êtes éligible avant de postuler. > **Comment promouvoir mon application certifiée auprès de mes clients ?** > > N'hésitez pas à utiliser le modèle de communiqué de presse sur [cette page](https://www.hubspot.com/partners/app/resources) pour annoncer que votre application a obtenu la certification. > > Si vous prévoyez de publier du contenu sur les réseaux sociaux, n'hésitez pas à mentionner HubSpot pour partager votre succès. > **J'aime expérimenter avec les dernières API bêta. La certification d'application est-elle faite pour moi ?** > > Il est recommandé de contacter votre [gestionnaire de partenaires d'application](#app-partner-manager) pour examiner si la certification conviendrait à votre application. > > L'objectif de HubSpot est de s'assurer que votre application est bien conçue pour les clients communs et limite les modifications de dernière minute, ce qui nécessite que votre application utilise les dernières API stables. HubSpot est également là pour soutenir les entrepreneurs, les adeptes des dernières technologies et les développeurs désireux d'expérimenter les dernières API bêta. > **J'aimerais que mon application figure sur le marketplace des applications. Est-ce à cela que sert la certification d'application ?** > > Les avantages liés au fait de figurer dans les collections et de permettre aux clients de filtrer facilement pour trouver une application certifiée sur le marketplace des applications continuent d'évoluer. L'équipe HubSpot serait ravie de savoir quelle représentation vous trouvez la plus utile (par exemple : Marketplace des applications, Communauté HubSpot, les newsletters organisées par HubSpot ou d'autre formulaires). > > Votre [responsable des partenaires d'application](#app-partner-manager) est le meilleur point de contact pour discuter des avantages potentiels et répondre à vos questions. > **Pourquoi et comment mes ressources publiques seront-elles évaluées en fonction des bonnes pratiques en matière de sécurité ?** > > Chaque client utilisant en moyenne plus de cinq intégrations, il est impératif que vos applications fassent l'objet d'un suivi et soient soumises à des normes de confidentialité, de sécurité et de qualité tout au long de votre vie. Toutes les ressources publiques seront évaluées à l'aide des informations déjà fournies lors d'un processus d'inscription et les résultats seront analysés à l'aide d'une méthode non invasive. > **Mon application a été certifiée il y a plus d'un an. Que dois-je faire pour conserver mon statut de certification et que signifie obtenir une nouvelle certification ?** > > L'équipe de qualité de l'écosystème HubSpot vous contactera si votre application n'est pas conforme ou doit faire l'objet d'une recertification annuelle avec les prochaines étapes. > > Nous vous encourageons à surveiller les performances de votre application, les exigences de certification, le [journal des modifications des développeurs](https://developers.hubspot.com/changelog) et toute autre ressource HubSpot liée à tout changement de technologie utilisé et à la façon dont votre application pourrait rester à jour. Trouvez votre **Gestionnaire de partenaires d'applications** et son adresse e-mail en vous connectant à votre compte de développeur et en accédant à **Marketplace des applications** > **Listings**. Passez le curseur sur votre application et cliquez sur **Plus** > **Afficher les détails du listing**. *** ## Ressources associées [Comment faire une demande de certification d'application ?](https://developers.hubspot.com/docs) [Comment lister votre application ?](/docs/apps/developer-platform/list-apps/listing-your-app/listing-your-app) [Conditions relatives aux listings](https://developers.hubspot.com/docs) [Forum de la communauté des développeurs](https://community.hubspot.com/t5/APIs-Integrations/bd-p/integrations) [Contacter l'équipe Partenaire d'application](https://www.hubspot.com/partners/app/join) # Conditions relatives aux listings d'applications Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/listing-your-app/app-marketplace-listing-requirements Les partenaires d 'Marketplace des applications | Conditions relatives aux listings'; "Les partenaires d'application peuvent désormais consulter depuis un espace unique les directives et exigences de HubSpot pour le listing de leurs applications sur le marketplace des applications. "; Les soumissions de listings d'applications sont étudiées manuellement par l'équipe qualité de l'écosystème HubSpot et seront rejetées si elles ne respectent pas les conditions décrites ci-dessous. Une fois que votre application répond à ces exigences, vous pouvez [créer votre listing d'application](/docs/apps/developer-platform/list-apps/listing-your-app/listing-your-app) à partir de votre compte de développeur. ## Conditions requises * **Accès :** le listing ne doit pas rediriger vers une autre application publique ou privée ni nécessiter le fonctionnement d'une autre application publique ou privée. * **Singularité :** votre application publique listée doit être unique. Si vous avez déjà publié une application et que vous souhaitez la remplacer, mettez à jour l'application existante au lieu d'en publier une nouvelle. * **Cas d'utilisation :** chaque application que vous créez doit répondre à un cas d'utilisation distinct. Les applications ayant des fonctionnalités similaires et utilisant les mêmes API doivent être consolidées en une seule application. * **ID d'application HubSpot unique :** votre application doit autoriser les requêtes d'API avec l'ID d'application HubSpot public (et l'[ID de client OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth)) associé à votre listing d'application. * **OAuth :** votre application doit utiliser OAuth comme méthode d'autorisation unique. Découvrez-en davantage sur l'[utilisation de OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth). * **Installations :** votre application doit avoir au moins trois [installations actives uniques](https://developers.hubspot.com/docs#:~:text=Active%20installs%20are%20the%20number%20of%20unique%20HubSpot%20production%20accounts%2C%20unaffiliated%20with%20your%20organization%2C%20showing%20successful%20app%20activity%20within%20the%20past%2030%20days.). * **Périmètres d'accès :** vous devez uniquement demander les périmètres d'accès nécessaires pour votre application Les [paramètres de domaine avancés](/docs/apps/legacy-apps/public-apps/overview#configure-scopes) de votre application doivent être activés. Pour éviter les erreurs, sélectionnez les domaines requis, conditionnellement requis et facultatifs. * **Conditions générales** : vous devez consulter et accepter les conditions générales du [contrat relatif au Programme Partenaires d'applications de HubSpot](https://legal.hubspot.com/app-program-agreement). * **Secteurs d'activité restreints :** votre application ne doit pas s'adapter ou fournir des fonctionnalités qui serviraient exclusivement les clients de l'un des [secteurs d'activité restreints](https://legal.hubspot.com/acceptable-use#Restricted-Industries) de HubSpot. * **Fonctionnalité limitée :** votre application ne peut pas utiliser les [cartes CRM classiques](/docs/api-reference/crm-public-app-crm-cards-v3/guide), car elles ne sont plus prises en charge à compter du 16 juin 2025. Découvrez-en davantage sur cette annonce dans le [journal des modifications des développeurs HubSpot](https://community.hubspot.com/t5/Developer-Announcements/Deprecating-Support-for-Classic-Legacy-CRM-Cards/m-p/1153039#M1048). ### Exigences de branding HubSpot * Votre application et ses ressources associées (documentation, pages de destination, etc.) doivent répondre aux [Directives de branding de HubSpot](https://www.hubspot.com/partners/app/branding-guidelines). Par exemple, mettez en majuscule la lettre « S » dans « HubSpot » chaque fois que vous faites référence à HubSpot. * Votre application et ses ressources associées (documentation, pages de destination, etc.) ne doivent pas être contraires aux [Conditions générales d'utilisation des marques commerciales de HubSpot](https://legal.hubspot.com/tm-usage-guidelines). Par exemple, ne combinez pas le nom de HubSpot (y compris « Hub » et « HubSpot ») avec le nom ou le logo de votre application. ### Conditions relatives aux listings Une fois que vous avez rempli ces conditions, vous pouvez soumettre votre listing d'application. Lorsque vous soumettez votre listing d'application, vous devez renseigner correctement toutes les informations. Ces champs sont particulièrement importants et si vous ne répondez pas à ces exigences, votre listing ne sera défini qu'en mode Brouillon : * Le contenu de votre listing doit être spécifique à l'intégration, contrairement aux informations générales sur le produit. Il doit contenir des informations sur la valeur ajoutée pour les clients avec le téléchargement et l'utilisation de cette intégration. Quelques exemples à suivre : [Aircall](https://ecosystem.hubspot.com/marketplace/apps/aircall), [CloudFiles](https://ecosystem.hubspot.com/marketplace/apps/cloudfiles), [Reveal](https://ecosystem.hubspot.com/marketplace/apps/reveal-191193). * Toutes les URL de votre listing du marketplace des applications doivent mener à des pages actives, accessibles au public et fonctionnelles. * Cela sera vérifié en utilisant les [outils Outil SEO de HubSpot](https://knowledge.hubspot.com/fr/seo/understand-seo-crawling-errors) pour explorer les pages associées à l'inscription. * Pour éviter des retards inutiles dans le processus d'analyse, il est fortement recommandé de travailler avec l'administrateur de votre site pour ajouter l'agent utilisateur du *robot d'indexation de HubSpot, HubSpot Crawler*, à la liste d'autorisations en tant qu'exemption avant de soumettre votre liste d'applications. * Vous devez fournir un lien vers la documentation de configuration publique spécifique à votre intégration HubSpot. * Consultez la [configuration requise complète pour la documentation d'installation](https://developers.hubspot.com/docs). Ce guide comprend également un exemple de modèle qui répond à toutes les exigences. * À titre d'exemple, consultez le [guide d'installation de OrgChartHub](https://orgcharthub.com/guides/setup). * Incluez une URL de bouton d'installation pertinente qui redirige les clients vers une page où ils peuvent facilement connecter votre application à HubSpot. * Les URL des ressources de support de votre application (site web de support, forum de la communauté HubSpot, étude de cas) doivent être en ligne, à jour et accessibles publiquement. * Les URL des Conditions d'utilisation et de la Politique de confidentialité de votre application doivent être en ligne et à jour. * Tous les champs d'URL ont une limite de 250 caractères. * Les *données partagées*, qui permettent aux utilisateurs de savoir comment les informations circuleront entre votre application et HubSpot, doivent être précises, à jour et présenter les [périmètres d'accès](https://developers.hubspot.com/docs#:~:text=Webhooks%20API.-,Scopes,-%3A%20You%20must) requis par votre application. * Tous les objets sélectionnés dans vos périmètres d'accès OAuth doivent être documentés dans le tableau *Données partagées*. * Si votre application demande à la fois des périmètres d'accès de lecture et de rédaction d'objet, la synchronisation des données doit être annoncée comme bidirectionnelle pour ces objets spécifiques. * Votre listing de marketplace des applications doit contenir des informations claires et précises sur les tarifs. * Le plan tarifaire figurant dans le listing doit correspondre aux informations tarifaires publiées sur votre site web. * Le plan tarifaire du listing doit uniquement inclure les plans tarifaires qui permettent l'utilisation de votre intégration HubSpot. * Si un plan tarifaire ne prend pas en charge l'intégration, il ne doit pas être inclus dans votre liste. * Par exemple, si vous avez un *plan A* et un *plan B* pour votre application, mais que seul le *plan B* peut être utilisé avec l'intégration, seuls les détails tarifaires du *plan B* doivent être inclus dans la liste. * Les plans tarifaires gratuits ne doivent être utilisés que pour les modèles libres ou freemium. * Vous devez inclure au moins une méthode de contact du support. * Suivez les directives indiquées [ici](https://developers.hubspot.com/docs) pour fournir des informations d'identification de test pour votre listing d'application. ## Analyse, retour et approbation Une fois que vous avez soumis votre listing, l'équipe qualité de l'écosystème HubSpot procédera à une première analyse dans les 10 jours ouvrables. Si l'une des informations fournies est incorrecte, trompeuse ou incomplète, nous vous en informerons. L'ensemble du processus d'examen et de feedback sur l'application ne devrait pas prendre plus de 60 jours à partir du moment où le feedback est partagé. Comme indiqué dans les [Conditions générales du marketplace des applications](https://legal.hubspot.com/app-program-agreement), HubSpot se réserve le droit de retirer ou de refuser la publication de votre listing d'application à tout moment. **Remarque :** vous ne pouvez envoyer qu'une seule application à la fois pour la certification. Toute application supplémentaire soumise pendant le traitement de l'application initiale sera automatiquement rejetée. ## Récompenses pour les partenaires d'applications listées * Listing dédié dans la marketplace HubSpot des applications * Accès prioritaire au support développeur via un alias de support dédié * Ressources communautaires pour les développeurs, y compris des webinars, des forums et bien plus encore * Sélection de ressources marketing, y compris des modèles de RP et des guides de lancement * Parrainage, stands et tickets remisés pour des événements INBOUND * Logiciel remisé via le programme de capital-amorçage HubSpot pour start-ups * Newsletters mensuelles avec des nouveautés marketing, des sorties de produit et bien plus encore ## Ressources associées * [Comment lister votre application ?](/docs/apps/developer-platform/list-apps/listing-your-app/listing-your-app) * [Conditions relatives à la certification des applications](https://developers.hubspot.com/docs) * [Documentation de référence pour les API](/docs/api-reference/overview) * [Comment utiliser les API de HubSpot](/docs/api-reference/overview) * [Forum de la communauté des développeurs](https://community.hubspot.com/t5/APIs-Integrations/bd-p/integrations) * [Contacter l'équipe Partenaire d'application](https://www.hubspot.com/partners/app/join) # Créer un guide d'installation de listing d'applications Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/listing-your-app/create-an-app-listing-setup-guide # Marketplace des applications | Lister votre application Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/listing-your-app/listing-your-app Suivez ces étapes pour soumettre une application pour la liste du Marketplace des applications de HubSpot. 'Suivez ces étapes pour soumettre une application pour la liste du Marketplace des applications de HubSpot.'; Une fois que vous avez créé une application dans votre compte de développeur qui répond aux [conditions relatives aux listings sur le marketplace des applications](https://developers.hubspot.com/docs), vous pouvez soumettre un listing pour l'ajouter au [marketplace des applications de HubSpot](https://ecosystem.hubspot.com/marketplace/apps). L'équipe de qualité de l'écosystème HubSpot analysera votre demande et vous fera savoir par e-mail quand l'application aura été approuvée ou rejetée. Vous devez être un [super administrateur](https://knowledge.hubspot.com/fr/user-management/hubspot-user-permissions-guide#super-admin) pour mettre à jour et soumettre un listing d'application. ## Créer et soumettre un listing d'applications Avant de soumettre un listing d'application, consultez la page [Conditions relatives aux listings d'applications](https://developers.hubspot.com/docs) pour savoir comment élaborer votre listing. * Dans votre [compte de développeur d'applications](https://developers.hubspot.com/docs), accédez à **Marketplace** > **Listings d'applications**. * Cliquez sur **Créer un listing** dans l'angle supérieur droit. Si ce bouton est grisé, des listings ont déjà été créés pour toutes vos applications existantes. * Sélectionnez l'**application** pour laquelle vous souhaitez créer un listing et cliquez sur **Suivant**. Les applications qui sont déjà répertoriées sur le Marketplace des applications n'apparaîtront pas ici. * Cliquez sur le menu déroulant **Sélectionner la langue de liste principale pour \[nom de l'application]** et sélectionnez la **langue par défaut** que les utilisateurs verront lorsqu'ils navigueront sur le marketplace des applications. * Cliquez sur **Suivant**. L'assistant de listing d'applications dispose de sept onglets d'informations à remplir : * [Informations sur le listing](#listing-info) * [Détails de l'application](#app-details) * [Tarification](#pricing) * [Fonctionnalités de l'application](#app-features) * [Informations sur le support](#support-info) * [Informations sur les test](#testing-info) * [Informations d'analyse](#review-info) ### Informations sur le listing Dans l'onglet *Informations sur les listings* : * Dans la section *Informations sur l'application*, ajoutez le **Nom public de l'application**, le **Nom de l'entreprise**, le **Slogan** et l'**URL du bouton d'installation**. Pour les comptes créés après le 5 mars 2025, vous devrez sélectionner l'URL du bouton d'installation dans les URL de redirection définies dans les [paramètres de l'application](guides/apps/public-apps/overview). * Dans la section *icône d'application*, chargez une icône de 800 par 800 pixels pour votre application. Celle-ci apparaîtra dans le marketplace des applications et les comptes des utilisateurs connectés. Lors de la création de votre icône : * **À faire** : utiliser un fichier JPG, JPEG ou PNG, remplir tout l'espace (800 par 800 pixels) - votre image doit toucher au moins deux bords, et utiliser une image haute résolution, non pixelisée. * **À ne pas faire** : inclure du texte dans votre icône, utiliser un mot-symbole ou laisser un espace blanc supplémentaire autour de votre icône. ![dev-doc-logo](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/dev-doc-logo.png) * Dans la section *Catégoriser votre application*, vous pouvez sélectionner jusqu'à deux **catégories** pour votre application. Découvrez-en davantage sur les [différentes catégories disponibles](https://developers.hubspot.com/docs). * Vous pouvez également tester et ajouter un **chemin d'URL** et les **termes de recherche** pouvant être utilisés pour trouver votre application dans le marketplace des applications. ### Détails de l'application Dans l'onglet *Détails de l'application* : * Dans la section *Vidéo de démonstration*, chargez une **vidéo** pour montrer le fonctionnement de votre application. Reportez-vous à la page [Comment créer une excellente vidéo de démonstration d'application](https://www.hubspot.com/partners/apps/resources/how-to-make-a-great-app-demo-video) pour connaître les bonnes pratiques ainsi que des exemples de création d'une vidéo de démonstration. * Dans la section *Captures d'écran*, ajoutez des **images** et du **texte alternatif** montrant le fonctionnement de votre application. Vous pouvez ajouter jusqu'à huit images. * Dans la section *Vue d'ensemble de l'application*, entrez une **présentation** de votre application. Votre présentation doit comprendre des informations concernant ce que fait votre application, les principaux problèmes commerciaux qu'elle résout et les raisons pour lesquelles les utilisateurs devraient l'installer. * Cliquez sur **Ajouter des données partagées**. Dans la section *Données partagées*, indiquez aux utilisateurs comment les données circuleront entre votre application et HubSpot. * Dans le panneau de droite, sélectionnez quel objet de l'application se synchronise avec quel objet de HubSpot, et la direction de la synchronisation. Dans la section *Vue d'ensemble de l'application*, **décrivez** brièvement comment votre application peut aider les utilisateurs à atteindre leurs objectifs. * Pour ajouter une autre synchronisation d'objets, cliquez sur **Ajouter un autre objet**. ![shared-data-app-listing](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/shared-data-app-listing.png) * Cliquez sur le menu déroulant **Fonctionnalités de HubSpot compatibles avec votre application** et **cochez les cases** à côté des fonctionnalités HubSpot. Vous pouvez ajouter jusqu'à 10 outils et fonctionnalités HubSpot. * Cliquez sur le menu déroulant **Autres outils intégrés à votre logiciel** et sélectionnez les **cases à cocher** à côté de tous les outils ou applications externes avec lesquelles votre application s'intègre. Vous pouvez sélectionner jusqu'à 6 autres outils ou applications. * Cliquez sur le menu déroulant **Langues dans lesquelles votre application est disponible** et sélectionnez toutes les **langues** disponibles pour votre application. Vous ne pouvez créer des listings du marketplace des applications supplémentaires que dans ces langues. ### Tarification Dans l'onglet *Tarification* : * Cliquez sur le menu déroulant **Devise** et sélectionnez les **cases à cocher** à côté des devises dans lesquelles vous souhaitez lister l'application. Vous pouvez choisir parmi plus de 100 devises. * Vous pouvez également définir des plans tarifaires pour votre application en ajoutant le **modèle tarifaire**, le **nom de l'abonnement**, le **slogan**, les **détails de la tarification** et la **liste des fonctionnalités**. * En fonction du modèle tarifaire choisi, vous devrez peut-être ajouter d'autres informations, comme la fréquence de paiement, les frais uniques ou les tarifs mensuels. Survolez **l'icône d'information** avec la souris pour en savoir plus sur chaque modèle tarifaire. ![DD - Tarification de l'application](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/DD%20-%20App%20Pricing.png) * Pour ajouter un plan tarifaire supplémentaire, cliquez sur **Ajouter un autre plan**. Vous pouvez ajouter jusqu'à 5 plans tarifaires. * Dans la section *Lien vers le plans tarifaires de votre logiciel*, saisissez l'élément **URL** où les utilisateurs peuvent trouver plus d'informations sur vos plans tarifaires. * Dans la section *Plans tarifaires de l'agence*, saisissez l'élément **URL** où les utilisateurs peuvent se renseigner sur la tarification des services de partenariat ou de conseil. ### Fonctionnalités de l'application Dans l'onglet *Fonctionnalités de l'application*, ajoutez des fonctionnalités et guidez les clients sur la façon de les utiliser. Il n'y a pas de limite au nombre de fonctionnalités d'application pouvant être créées pour votre application. * En haut à droite, cliquez sur **Ajouter une fonctionnalité**. * Sur la page *Détails sur la fonctionnalité*, configurez les fonctionnalités de votre application : * **Nom de votre fonctionnalité** : saisissez le nom de votre fonctionnalité. Il doit décrire ce que fait votre fonctionnalité. * **Domaines** : sélectionnez tous les domaines dont un compte client a besoin pour disposer de cette fonctionnalité. Les groupes de domaines sont utilisés pour déterminer si le compte HubSpot du client est compatible avec les fonctionnalités de l'application. * **Description** : saisissez une description détaillée de votre fonctionnalité et de la façon dont elle peut résoudre les problèmes commerciaux d'un client. * **Image** : ajoutez une image pour votre fonctionnalité. Après avoir ajouté votre image, cliquez pour activer l'option **Sur le listing du marketplace de votre application** ou **En tant que carte de découverte de fonctionnalité** pour configurer l'emplacement où vos images doivent s'afficher. * Si vous choisissez d'afficher la fonctionnalité en tant que carte de découverte de fonctionnalité : * Sélectionnez une option pour votre bouton principal : * **Lien vers une fonctionnalité** : sélectionnez la fonctionnalité HubSpot à laquelle le bouton doit être lié. * **Créer une fonctionnalité** : saisissez le **Texte du bouton** et **l'URL du bouton**. * **Aucun bouton principal** : aucun bouton ne s'affichera sur votre carte de découverte de fonctionnalités. * Sélectionnez un guide pratique pour intégrer vos clients : * **Créer un guide à partir de zéro** : saisissez un **titre**, une **description** et une **image ou une vidéo**. * **Lien externe vers le guide :** saisissez une **URL du guide**. * **Guide vidéo uniquement :** chargez une **vidéo**. * Pour ajouter un autre guide, cliquez sur **Ajouter une autre section**. ![](https://www.hubspot.fr/hubfs/image-png-Dec-13-2024-10-32-55-1239-AM.png) ### Informations sur le support Dans l'onglet *Informations sur le support* : * Dans la section *Informations de contact*, ajoutez une méthode de contact du support pour les utilisateurs qui ont des questions sur l'utilisation de votre application. Il est nécessaire d'ajouter un **e-mail de support** et les **langues** dans lesquelles le support client est proposé. Vous pouvez également inclure des liens vers le site web de votre entreprise, le chat en direct, la page Facebook et un numéro de téléphone. * Dans la section *Ressources support*, incluez des **liens** vers la documentation d'installation de votre application. * Dans la section *Conditions d'utilisation et Politique de confidentialité*, ajoutez des **liens** vers votre documentation sur la confidentialité. ### Informations sur les test Dans l'onglet *Informations sur les tests* : * Dans le champ *Instructions pour l'évaluation de l'application*, saisissez les étapes que les développeurs de HubSpot doivent suivre pour tester l'application dans le cadre du processus d'évaluation. Découvrez comment [fournir des détails de test et des informations d'identification pour votre application](https://developers.hubspot.com/docs). * Dans la section *Interlocuteur du Programme Partenaires d'applications*, ajoutez les détails permettant aux membres de votre équipe de recevoir des informations sur la liste, les informations techniques et le programme de votre liste d'applications. * Vous devez inclure au moins un *interlocuteur du programme Partenaires d'applications* et un *développeur* à contacter. Vous devez inclure le **rôle** de la personne, son **prénom** et son **nom**, son **adresse e-mail** et le **pays** où elle est basée. * Pour ajouter une autre personne comme point de contact, cliquez en bas sur **Ajouter un autre interlocuteur**. ### Informations d'analyse Dans l'onglet *Informations d'analyse* : Dans la section *Évaluation de l'application* une liste de toutes les erreurs de listing apparaît : * Pour consulter les détails de toutes les erreurs de listing, en haut, cliquez sur **Tout développer**. * Pour masquer les détails de toutes les erreurs de listing, en haut, cliquez sur **Tout réduire**. * Pour résoudre une erreur, cliquez sur le **nom de l'erreur**. Cela vous dirigera vers l'onglet et la section appropriés pour résoudre l'erreur. ![](https://www.hubspot.fr/hubfs/image-png-Dec-13-2024-11-25-02-2139-AM.png) * Si le bouton *Valider et soumettre* est grisé, vérifiez que vous avez renseigné tous les champs requis et que vous disposez des autorisations de *super administrateur*. * Si vous avez omis des champs obligatoires, un nombre dans le titre de l'onglet indiquant le nombre de champs omis s'affichera. Cliquez sur chaque **onglet** et saisissez les informations manquantes, puis revenez à l'onglet *Informations d'analyse*. * En bas, cliquez sur **Lancer la validation**. ![](https://www.hubspot.fr/hubfs/image-png-Dec-13-2024-11-31-19-4860-AM.png) ## Créer et mettre à jour un listing localisé pour un listing d'application existant Vous devrez définir une langue principale sur votre listing d'application existant et avoir déjà publié le listing principal dans le marketplace de HubSpot afin de créer des listings dans d'autres langues. * Dans votre compte de développeur d'application, cliquez sur **Marketplace** > **Listings de applications**. * Si vous avez déjà une application listée sur le Marketplace, une bannière jaune au-dessus de l'application listée vous demande de définir la langue principale de votre listing. Cliquez sur **Définir maintenant**. Vous devrez définir la langue principale du listing de l'application avant de pouvoir créer de nouveaux listings de langues. * Dans la fenêtre de dialogue, cliquez sur le menu déroulant **Sélectionner les langues dans lesquelles votre application est disponible** et sélectionnez les **langues** dans lesquelles votre logiciel d'application est disponible. * Cliquez sur le menu déroulant **Sélectionner la langue de liste principale pour \[nom de l'application]** et sélectionnez la **langue par défaut** que les utilisateurs verront lorsqu'ils navigueront sur le marketplace des applications. * Cliquez sur **Enregistrer**. Une fois que vous avez défini une langue principale, vous pourrez ajouter un nouveau listing localisé : * Survolez le **listing d'application** et cliquez sur **Plus** > **Créer un listing dans une autre langue**. * Si vous souhaitez traduire automatiquement votre liste dans d'autres langues, activez la **Traduction automatique**. * Si vous avez sélectionné cette option, tous les listings traduits seront automatiquement et immédiatement publiés sur le marketplace. Les listings traduits automatiquement ne feront pas l'objet d'une révision par l'administrateur. * Cliquez sur le menu déroulant **Langue pour ce listing** et sélectionnez la **langue** dans laquelle vous souhaitez créer ce listing. * Lorsqu'un utilisateur a défini la langue dans son compte, il verra automatiquement le listing dans cette même langue. Par exemple, si vous avez créé un listing en espagnol et qu'un utilisateur a défini l'espagnol comme [langue par défaut de son compte](https://knowledge.hubspot.com/fr/account-management/change-your-language-and-region-settings), la liste apparaîtra pour l'utilisateur en espagnol. * Si l'option de *traduction automatique* a été activée, les langues sélectionnées seront automatiquement traduites et publiées en tant que nouveaux listings. * Cliquez sur **Créer**. Si vous créez manuellement un listing, suivez les étapes pour créer et soumettre un listing dans la langue sélectionnée. ## Modifier un listing d'application en ligne Une fois qu'un listing d'applications est en ligne sur le marketplace des applications, vous pouvez le modifier : * Dans votre compte de développeur, accédez à **Marketplace** > **Listing des applications**. * Passez le curseur sur le listing que vous souhaitez modifier et cliquez sur **Plus**. Ensuite, sélectionnez **Modifier**. * Après avoir effectué vos modifications, en haut à droite, cliquez sur **Valider et soumettre**. * Dans la boîte de dialogue, lisez les conditions générales, puis sélectionnez les **cases à cocher**. * Pour traduire automatiquement les modifications des listings localisés, cochez la case **Traduire automatiquement tous mes listings localisables pris en charge**. Passez la souris sur *mes listings localisables pris en charge* pour voir quels listings seront automatiquement traduits. * Cliquez sur **Accepter et soumettre**. ![Listings localisables pris en charge visibles dans la boîte de dialogue en survolant](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/view-supported-localizable-listings.png) ## Annuler la publication d'un listing d'application en ligne * Dans votre compte de développeur, accédez à **Marketplace** > **Listing des applications**. * Passez le curseur de la souris sur le listing dont vous souhaitez annuler la publication et cliquez sur **Plus**. Puis, sélectionnez **Annuler la publication du listing en direct**. * Dans la boîte de dialogue, saisissez la raison de l'annulation de la publication de l'application, puis cliquez sur **Soumettre une requête d'annulation de la publication**. Les requêtes d'annulation de publication sont traitées par l'équipe du marketplace de HubSpot dans les 10 jours ouvrables suivant leur soumission. # Marketplace des applications | Comprendre les catégories d'applications Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/listing-your-app/understand-app-categories # Measure app performance Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/measure-app-performance # Configurer la planification de démonstration à partir de la page de listing d'application Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/set-up-demo-scheduling-from-the-app-listing-page Découvrez comment laisser les contacts soumettre un formulaire ou planifier une réunion depuis votre page de listing d'application. Lorsque vous configurez votre page de listing d'application, vous pouvez ajouter une page de planification et/ou un formulaire pour permettre aux clients potentiels de planifier une démonstration avec vous. ## Ajouter une page et/ou un formulaire de planification à une liste d'applications * Dans votre compte de développeur, accédez à **Marketplace** > **Listing des applications**. * Passez le curseur sur une liste et cliquez sur **Plus**, puis sélectionnez **Modifier**. Découvrez-en davantage sur la [création d'un listing d'application](/docs/apps/developer-platform/list-apps/listing-your-app). * Dans l'onglet *Informations sur les listings*, ajoutez des options pour planifier une démonstration : * Pour ajouter un lien de prise de rendez-vous, cliquez sur le menu déroulant **Ajouter l'URL de vos réunions** et sélectionnez une **page de planification**. Pour créer une nouvelle page de planification, cliquez sur **Créer un lien de prise de rendez-vous**. Découvrez-en davantage sur l'utilisation de [pages de planification](https://knowledge.hubspot.com/meetings-tool/create-and-edit-scheduling-pages). * Pour ajouter un formulaire, cliquez sur le menu déroulant **Ajouter un formulaire de contact** et sélectionnez un **formulaire**. Pour créer un nouveau formulaire, cliquez sur **Créer un formulaire de contact**. Découvrez-en davantage sur [l'utilisation de formulaires de contact](https://knowledge.hubspot.com/forms/create-and-edit-forms). ![Configurer vos options de programmation de démonstration](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/add-meeting-or-form-to-app-listing.png) * Dans l'angle supérieur droit, cliquez sur **Valider et soumettre**. Une fois vos modifications approuvées, vos clients verront une option dans l'angle supérieur droit de votre listing d'application pour planifier une démonstration ou demander à être contactés. Si vous avez ajouté une page de planification et un formulaire de contact, les deux options seront disponibles dans le menu déroulant *Planifier une démonstration*. ![Menu déroulant dans le listing d'application permettant de planifier des démonstrations](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/schedule-demo-on-app-listing.png) # Marketplace des applications | Fournissez les informations d'identification de test pour votre application Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/testing-credentials # Understand updated app installation flow with the option for partner sign in Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/understand-app-install-flow # Understand technology partner tiers Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/understand-technology-partner-tiers # Afficher les contacts créés à partir du Marketplace Source: https://developers.hubspot.fr/docs/apps/developer-platform/list-apps/view-contacts-created-from-the-marketplace Découvrez comment accéder à une liste de contacts qui ont interagi avec vos listings d'applications du marketplace de HubSpot. Lorsque des contacts interagissent avec votre listing d'application du marketplace HubSpot, ils sont ajoutés à une liste de contacts spécifique dans le compte de développeur associé. Vous pouvez ensuite les contacter pour voir si l'application répondrait à leurs besoins. ## Avant de commencer Avant de commencer à travailler avec cette fonctionnalité, assurez-vous de bien comprendre les étapes à suivre à l'avance, ainsi que ses limites. ### Comprendre les exigences * Le compte de développeur associé à l'application doit utiliser les outils gratuits de HubSpot. * Les contacts apparaîtront sur la liste lorsqu'ils effectueront l'une des actions suivantes sur votre listing d'application : * Cliquez sur une vidéo ou une capture d'écran. * Cliquez sur « Afficher le guide d'installation ». * Cliquez sur « Site Web de l'entreprise ». ### Comprendre les limites et les considérations * Seuls les contacts connectés à HubSpot lorsqu'ils accèdent au listing d'applications seront ajoutés à la liste. ## Accéder aux contacts du listing d'applications * Dans le compte de développeur HubSpot associé à votre application, accédez à **CRM** > **Listes**. * Cliquez sur la **liste** intitulée « marketplace des applications - \[Nom de l'application] ». Si vous avez plusieurs applications, chacune d'entre elles aura une liste séparée. ![Consultez la liste des contacts qui ont interagi avec votre listing d'application](https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/review-leads-from-marketplace-listing.png) * Vous pouvez voir les informations suivantes pour les contacts : * Premier Nom * Nom de famille * Entreprise * E-mail # Mappage des alias Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/fields/alias-mapping # Héritage des paramètres de marque Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/fields/brand-and-settings-inheritance Découvrez comment utiliser les paramètres de marque, tels que les logos et les couleurs de marque, dans un thème ou dans des fichiers HubL/HTML et CSS. Grâce aux [paramètres de marque](https://knowledge.hubspot.com/settings/customize-branding-for-your-hubspot-content#customize-your-company-logo-and-colors), les utilisateurs peuvent configurer les couleurs, les logos et les favicons de l'entreprise à utiliser dans les contenus HubSpot. Cela vous permet d'accéder à ces paramètres de marque avec des jetons dans le fichier `fields.json` d'un thème et dans les fichiers HTML/HubL et CSS. Vous pouvez également accéder aux couleurs de la marque dans le fichier `fields.json` d'un module. Après avoir ajouté ces jetons dans un fichier `fields.json`, les créateurs de contenu peuvent modifier leurs valeurs dans l'éditeur de paramètres de thème. Lorsque vous ajoutez ces jetons dans un HTML, un HubL ou un CSS, les valeurs seront fortement codées et ne pourront pas être modifiées dans l'éditeur de page par les créateurs de contenu. Découvrez ci-dessous les variables de configuration de marque disponibles ainsi que des exemples de mise en œuvre. ## Variables des paramètres de marque La liste suivante est une liste des options accessibles depuis la zone des paramètres de la marque, dans la valeur de l'objet `property_value_paths` ou dans les fichiers HTML/HubL et CSS. ### Couleurs Les couleurs de la marque sont accessibles à la fois dans le [fichier fields.json](#fields-json-color) d'un thème ou d'un module et dans les fichiers HTML/HubL et CSS à l'aide des jetons HubL suivants : * **Principal :** * `{{brand_settings.primaryColor}}` * `{{brand_settings.colors[0]}}` ![brand-colors-primary](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/brand-colors-primary.png) * **Secondaire :** `{{brand_settings.secondaryColor}}` ![brand-colors-secondary](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/brand-colors-secondary.png) * **Couleurs du thème :** * `{{brand_settings.accentColor1}}` * `{{brand_settings.accentColor2}}` * `{{brand_settings.accentColor3}}` ![brand-colors-accent](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/brand-colors-accent.png) * **Couleurs supplémentaires :** * `{{brand_settings.colors[1]}}` * `{{brand_settings.colors[2]}}` * `{{brand_settings.colors[3]}}` ![brand-colors-additional](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/brand-colors-additional.png) Pour accéder directement au code hexadécimal d'une couleur, incluez un filtre `hex` dans le jeton. Par exemple : `{{brand_settings.primaryColor.hex}}` Pour inclure les couleurs des paramètres de marque dans le fichier `fields.json` d'un thème ou d'un module, utilisez le format suivant : ```json theme={null} //Example of using the primary color in within a theme's // field.json file { "name": "branding_color", "label": "branding_color", "type": "color", "default": { "color": "#26ff55", "opacity": 60 }, "inherited_value": { "property_value_paths": { "color": "brand_settings.primaryColor" } } } ``` > [!WARNING] > > Il se peut que les comptes n'aient pas de couleurs supplémentaires configurées dans leurs paramètres de marque. Si votre code fait référence à une couleur héritée qui n'existe pas dans les paramètres de marque, la logique de repli suivante est utilisée : > > * `secondaryColor` revient à la première couleur supplémentaire (`colors[1]`). > * `accentColor1` revient à la deuxième couleur supplémentaire (`colors[2]`). > * `accentColor2` revient à la troisième couleur supplémentaire (`colors[3]`). > * `accentColor3` revient à la quatrième couleur supplémentaire (`colors[4]`). > * Les couleurs supplémentaires (par exemple : `colors[3]`) reviendront à la valeur `default`. S'il n'y a pas de jeu de couleur de propriété par défaut, `primaryColor` sera utilisé. ### Logos Les logos de marques sont accessibles dans le fichier `fields.json` d'un module et dans les fichiers HTML/HubL et CSS. Vous pouvez utiliser les jetons suivants pour accéder au logo principal défini dans les paramètres de la marque : * `{{brand_settings.primaryLogo}}` * `{{brand_settings.logos[0]}}` ![brand-settings-logo0](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/brand-settings-logo0.png) Tous les logos supplémentaires sont accessibles en utilisant `{{brand_settings.logos[1-19]}}`. En outre, vous pouvez accéder aux attributs de logo suivants : * **URL du logo :** `{{brand_settings.primaryLogo.link}}` * **Texte alternatif du logo :** `{{brand_settings.primaryLogo.alt}}` * **Hauteur du logo :** `{{brand_settings.primaryLogo.height}}` * **Largeur du logo :** `{{brand_settings.primaryLogo.width}}` * **Lien vers l'image du logo :** `{{brand_settings.primaryLogo.src}}` ### Favicons Les favicons de marques ne sont accessibles que dans les fichiers HTML/HubL et CSS. Vous pouvez utiliser les jetons suivants pour accéder au logo principal défini dans les paramètres de la marque : * `{{brand_settings.primaryFavicon}}` * `{{brand_settings.favicons[0]}}` ![brand-settings-favicon0](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/brand-settings-favicon0.png) Tous les favicons supplémentaires sont accessibles en utilisant `{{brand_settings.favicons[1-19]}}`. Vous pouvez accéder directement à l'URL du logo en incluant un filtre `src`. Par exemple : `{{brand_settings.primaryFavicon.src}}`. # Ajouter des polices personnalisées à un thème Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/fields/custom-fonts # oEmbed Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/fields/oembed # Écrire les champs du module et du thème à l'aide de JavaScript Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/fields/write-fields-using-javascript # Contenu global Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/global-content `Le contenu global est un contenu qui peut être réutilisé dans tous vos modèles pour créer des éléments d'information cohérents, tels que des en-têtes de site Web, des pieds de page, des barres latérales, des logos ou d'autres éléments.` Le contenu global est un contenu qui est partagé entre plusieurs rubriques d'un site Web. Les exemples courants sont les en-têtes, les pieds de page et les barres latérales de sites web. En tant que développeur, vous spécifierez quels composants doivent être globaux en utilisant des partials globaux ou en rendant les modules globaux. HubSpot propose une expérience d'édition différente pour les éditeurs de contenu qui leur permet de modifier facilement le contenu global et de prévisualiser les modifications sur les pages avant de les publier. Pour en savoir plus sur la modification de votre contenu global, veuillez consulter l'article [Utiliser du contenu global dans plusieurs modèles](https://knowledge.hubspot.com/design-manager/use-global-content-across-multiple-templates) de la base de connaissances HubSpot. ![Éditeur de contenu global](https://cdn2.hubspot.net/hubfs/53/5Cdocs/global-content/global-content-editor-4.png) ## Présentation Le contenu global est idéal pour afficher les mêmes informations sur plusieurs pages. Par exemple, l'en-tête et le pied de page de votre site web, tout comme l'en-tête en haut de cette page. ![hubspot-developers-header](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/hubspot-developers-header.png) Vous trouverez ci-dessous d'autres exemples de domaines dans lesquels vous pouvez utiliser le contenu global : * Navigation secondaire dans les différentes rubriques de votre site Web * Pieds de page (ou sous-pieds) avec les droits d'auteurs * Barres latérales des articles de blog (pour afficher les articles récents, une liste des auteurs, etc.) > [!WARNING] > > Le contenu global étant utilisé à de multiples endroits sur un site Web, il est d'autant plus important de [concevoir et d'élaborer vos partials et modules globaux dans un souci d'accessibilité](/docs/cms/best-practices/improve-existing-sites/accessibility). ### Partials globaux vs Modules globaux En tant que développeur, vous pouvez créer des partials globaux et des modules globaux, avec quelques différences clés entre les deux : * Les partials globaux sont un type de modèle créé à l'aide de HTML et HubL qui peut être réutilisé sur l'ensemble de votre site web. Les types de partials les plus courants sont les en-têtes de sites Web, les barres latérales et les pieds de page. * Les modules globaux sont des modules composés d'un ou plusieurs éléments de contenu qui peuvent être utilisés sur plusieurs pages de votre site. Parmi les types courants de modules globaux figurent des éléments tels que les formulaires d'inscription au blog, les éléments de navigation secondaire et les appels à l'action. Veuillez éviter d'inclure des modules globaux dans les partials globaux, car cela peut créer une expérience d'édition de contenu négative. > [!NOTE] > > Tous les modules et champs de vos partials et modules globaux sont facilement modifiables dans l'[éditeur de contenu global](https://knowledge.hubspot.com/design-manager/use-global-content-across-multiple-templates). ## Partials globaux ### Créer un partial global Un partial global est un type de modèle que vous pouvez créer localement via l'ILC de HubSpot à l'aide de la [commande create](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#create), comme indiqué ci-dessous. ```shell theme={null} hs create template ``` Lorsque vous êtes invité à choisir un type de modèle, sélectionnez `global partial`. Cela créera votre modèle dans le répertoire souhaité avec les annotations de modèle suivantes incluses dans le fichier HTML. ```html theme={null} ``` Pour voir un exemple de partial de contenu global, [veuillez consulter notre modèle sur GitHub.](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/partials/header.html) Ajouter des zones de glisser-déposer à des partials globaux Vous pouvez activer les fonctionnalités de glisser-déposer de contenu dans vos partials globaux en ajoutant des balises `dnd_area` similaires à celles des modèles de page. Pour plus d'informations, consultez notre [documentation sur la zone de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas). ### Inclure un partial global dans votre modèle existant Pour ajouter un partial global dans l’un de vos modèles existants, utilisez la balise HubL `global_partial` tout en faisant référence au chemin d’accès à votre partial. Vous trouverez ci-dessous un exemple tiré du [boilerplate du CMS](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/layouts/base.html#L21) utilisant cette balise. ```hubl theme={null} {% global_partial path="../partials/header.html" %} ``` Lorsque des partials globaux sont générés, ils contiennent un cadre `
` autour du partial global. Cet élément est utilisé par l'éditeur de page pour identifier que le contenu est un partial global. ```html theme={null}
``` > [!WARNING] > > ### Remarque: > > n'utilisez pas `global_partial` dans le `` d’un modèle. Cela déboucherait sur un HTML non valide. > > Dans la plupart des situations où vous souhaitez utiliser un partial global dans l’en-tête, il peut être plus logique d’utiliser un module global à la place, avec un [`{%require_head%}`](/docs/cms/reference/hubl/tags/standard-tags#require-head) pour insérer du code personnalisé dans l’en-tête, tout en fournissant des champs de module. ## Modules globaux Vous pouvez créer des modules globaux comme tout autre module via le ILC en exécutant la commande `hs create`, comme indiqué ci-dessous. ```shell theme={null} hs create module ``` Un module global est différencié par l’indicateur `global` dans le fichier `meta.json` du module. ```json theme={null} // meta.json file { "css_assets": [], "external_js": [], "global": true, "help_text": "", "host_template_types": ["PAGE"], "js_assets": [], "other_assets": [], "smart_type": "NOT_SMART", "tags": [], "is_available_for_new_content": false } ``` Vous pouvez également [créer des modules globaux dans HubSpot à l'aide du gestionnaire de conception](https://knowledge.hubspot.com/design-manager/create-and-edit-modules). Pour en savoir plus sur l'utilisation des modules, consultez les ressources connexes suivantes : * [Vue d'ensemble des modules](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview) * [Modules par défaut de HubSpot](/docs/cms/reference/modules/default-modules) * [Configuration de modules](/docs/cms/reference/modules/configuration) * [Utilisation de modules dans les modèles](/docs/cms/reference/modules/using-modules-in-templates) # Recherche de contenu Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/content-search Utilisation de la fonctionnalité de recherche native du site dans HubSpot CMS, Content Search. HubSpot CMS dispose d'une fonctionnalité intégrée de recherche sur le site pour permettre à vos visiteurs de trouver facilement le contenu qu'ils recherchent. HubSpot CMS dispose d'une fonctionnalité intégrée de recherche sur le site pour permettre à vos visiteurs de trouver facilement le contenu qu'ils recherchent. Tout votre contenu HubSpot est automatiquement indexé dans le moteur de recherche natif de HubSpot, ce qui vous évite de devoir configurer un outil de recherche tiers pour votre site Web. ## Recherche de contenu en cours Le moteur de recherche est accessible via l'[API de recherche de site](/docs/api-reference/cms-site-search-v3/guide). Cette API prend en charge de nombreuses options de filtrage pour vous permettre de créer une expérience de recherche puissante et hautement personnalisée sur votre site Web. Par exemple, si vous souhaitez effectuer une recherche sur votre blog, vous pouvez utiliser l'option `type=BLOG_POST` pour obtenir uniquement les articles de blog. Ou, si vous voulez intégrer la recherche dans la version espagnole de votre site Web, vous pouvez interroger `langue=es` pour ne renvoyer que les pages en espagnol. L'API les renvoie au format JSON qui peut être analysé avec JavaScript pour afficher les résultats sur votre site Web. Tous les types de contenu renverront le domaine, le titre, l'URL et la langue de la page. La description renvoyée est un échantillon de texte du contenu qui correspond le mieux au terme recherché. Un élément `` encadrera le texte parfaitement adapté, ce qui vous permettra de mettre en évidence le texte correspondant avec la CSS. Selon le type de contenu recherché, les résultats renvoient des informations légèrement différentes. Vous pouvez ainsi afficher différemment les résultats pour des types de contenu spécifiques. Par exemple, les articles de blog renverront des informations sur les balises de l'article, l'auteur et la date de publication. ```json theme={null} // json { "total": 850, "offset": 0, "limit": 10, "results": [ { "id": 3761238962, "score": 0.30858153, "type": "SITE_PAGE", "domain": "designers.hubspot.com", "url": "https://developers.hubspot.com/docs/cms/search", "language": "en", "title": "Content Search", "description": "Using HubSpot’s native search engine, content search, to implement search on your website" }, { "id": 3254581958, "score": 0.30858153, "type": "BLOG_POST", "domain": "designers.hubspot.com", "url": "https://designers.hubspot.com/blog/getting-started-with-local-development", "featuredImageUrl":"https://designers.hubspot.com/hubfs/local-development.jpg" "title": "Getting Started with Local Development", "description":"The beta Local Development Tooling connects your local workflow to HubSpot, allowing you to utilize version control, your favorite text editor and various web development technologies when developing on the HubSpot CMS." "authorFullName": "William Spiro", "tags": [ "Website Development", "Local Development" ], "publishedDate": 1447938000000 } } ``` ## Appliquer la recherche sur votre site Web Il existe deux modules par défaut à utiliser pour appliquer facilement la recherche sur votre site Web, qui utilisent l'[API de recherche de site](/docs/api-reference/cms-site-search-v3/guide) : `search_input` et `search_results`. ### Barre de recherche du site Une barre de saisie dans laquelle les visiteurs peuvent saisir des termes à rechercher. Ce module peut se trouver n'importe où sur votre site Web. Ce module peut être inclus dans un modèle avec `{% module "search_input" path="@hubspot/search_input" %}`. ```hubl theme={null} {% module "search_input" path="@hubspot/search_input" %} ``` ### Résultats de la recherche sur le site Renvoie une liste de contenu basée sur le terme recherché. Ce module peut se trouver n'importe où sur votre site Web. Ce module peut être inclus dans un modèle avec ```hubl theme={null} {% module "search_results" path="@hubspot/search_results" %} ``` Si la fonctionnalité de ces modules ne correspond pas à la manière dont vous souhaitez que la recherche fonctionne sur votre site Web, vous pouvez créer vos propres modules ou fonctionnalités de recherche. Les modules de recherche par défaut sont conçus pour être étendus en fonction de vos besoins de recherche. Vous pouvez visualiser et cloner ces modules dans le Gestionnaire de conception en recherchant leurs noms dans le Finder, ou vous pouvez les récupérer dans votre environnement local à l'aide de la [CLI CMS](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli) en exécutant `hs fetch @hubspot/search_input.module` ou `hs fetch @hubspot/search_results.module`. ![module de recherche par défaut](https://cdn2.hubspot.net/hubfs/53/default%20search%20module.png) ## Modèle de résultats de recherche Chaque domaine a sa propre page de résultats de recherche par défaut. Le modèle et le chemin d'accès de cette page sont définis dans **Paramètres > Site Web > Pages** sous l' [onglet Pages système](https://app.hubspot.com/l/settings/website/pages/all-domains/system-pages) pour des domaines spécifiques. Par exemple, consultez le [modèle de boilerplate de résultats de recherche du thème CMS](https://github.com/HubSpot/cms-theme-boilerplate/blob/master/src/templates/system/search-results.html). Le domaine défini pour la page de résultats de recherche est automatiquement connecté aux modules de recherche par défaut. Cependant, vous pouvez utiliser l'[API de recherche de site web](/docs/api-reference/cms-site-search-v3/guide) pour créer vos résultats de recherche comme vous le souhaitez sur n'importe quelle page de votre site web. ## Comment la priorité de la recherche est-elle déterminée ? L'ordre des résultats de recherche est déterminé par une série de comparaisons pondérées du contenu de la page par rapport au terme recherché par le visiteur. Le contenu de la page est séparé en champs de comparaison avec une pondération différente en fonction de l'endroit où se situe le contenu dans le code HTML de vos pages. Les champs de comparaison sont regroupés par ordre d'importance : 1. Titre HTML 2. Métadescription 3. Éléments HTML H1 4. Éléments HTML H2 5. Éléments HTML H3 6. Autres éléments HTML Remarque : Cette liste est susceptible d'être modifiée. Si vous souhaitez indiquer à notre indexeur de booster spécifiquement certains éléments d'une page, vous pouvez encadrer le contenu dans une classe `hs-search-keyword`. ## Contrôle de l'indexation pendant le développement Lors du développement d'un nouveau site, il est utile de pouvoir tester la recherche sur le site sans se soucier de son indexation par les moteurs de recherche tels que Google. Dans votre [`robots.txt`](https://knowledge.hubspot.com/fr/cos-general/customize-your-robots-txt-file) vous pouvez demander à HubSpot de tout explorer, tout en bloquant les autres robots. ```shell theme={null} # Block all bots User-agent: * Disallow: / # Allow HubSpot Site Search Indexing User-agent: HubSpotContentSearchBot Allow: / ``` > [!WARNING] > > Si l'une de vos pages comporte une balise méta indiquant « no index », la page ne sera toujours pas indexée, même si elle est autorisée dans le fichier `robots.txt`. > > N'oubliez pas de vérifier votre fichier `robots.txt` avant le lancement pour vous assurer que tout est indexé comme vous le souhaitez. ## Comportement d'indexation par défaut Comme le CMS connaît l'intention de certains types de pages, la recherche de contenu est en mesure de limiter l'indexation en toute sécurité pour permettre l'indexation des pages de type contenu. Exemples de pages de type contenu : * Pages du site * Pages de destination * Articles de la base de connaissances * Articles de blog **Les pages système et les pages protégées par un mot de passe ne sont pas indexées.** Les pages réservées au contrôle de l'accès au CMS ne s'afficheront dans la recherche de contenu de HubSpot que pour les utilisateurs qui sont connectés et ont accès aux pages. ## Comment puis-je exclure des pages des résultats de recherche ? Si vous empêchez une page d'être indexée par les moteurs de recherche via le fichier de votre site Web [`robots.txt`](https://knowledge.hubspot.com/fr/cos-general/customize-your-robots-txt-file) ou via les balises `meta`, elle ne sera pas indexée pour la recherche sur le site. Dans votre `fichier robots.txt`, ajoutez `disallow`. ```shell theme={null} # Block all bots User-agent: * Disallow: /path-to-page # Block just HubSpot Site Search Indexing User-agent: HubSpotContentSearchBot Disallow: /path-to-page ``` Vous pouvez également ajouter une métabalise `NOINDEX, NOFOLLOW` dans `` au niveau de la page ou du modèle. ```html theme={null} ``` > [!TIP] > > Il n'est pas nécessaire de bloquer les robots en utilisant à la fois `robots.txt` et la balise meta. Cela peut prêter à confusion si vous décidez d'autoriser l'indexation d'une page. ## Comment exclure des sections d'une page de l'indexation dans les recherches ? Parfois, certaines zones d'une page ne sont pas utiles à faire apparaître dans les résultats de recherche. Il peut s'agir du contenu d'un en-tête, d'un pied de page, d'une barre latérale, etc. Lorsque c'est le cas, vous pouvez ajouter la classe `hs-search-hidden` à votre HTML pour que la recherche ignore le contenu de ces zones. # Modules d'e-mail par défaut Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/default-email-modules # Formulaires HubSpot Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/forms Découvrez comment ajouter des formulaires à votre site web HubSpot ou à des pages externes à l'aide de modules, de HubL ou d'un code d'intégration. Ensuite, découvrez comment les styliser. Utilisez des formulaires HubSpot pour capturer les informations des visiteurs du site, auxquelles vous pouvez accéder via HubSpot. Vous pouvez partager des liens vers des formulaires directement avec les utilisateurs, [soumettre des données de formulaire via l'API](https://developers.hubspot.fr/docs/guides/api/marketing/forms) et les intégrer sur les pages de votre site web à l'aide du CMS. Les formulaires font partie intégrante de HubSpot et peuvent être créés dans un compte HubSpot de n'importe quel niveau d'abonnement. Non seulement les formulaires sont importants pour la conversion des clients, mais aussi parce que les données des formulaires peuvent être utilisées dans d'autres outils et ressources HubSpot, tels que le contenu intelligent, les listes, les workflows, la personnalisation du contenu, etc. Après avoir [créé un formulaire HubSpot](https://knowledge.hubspot.com/fr/forms/create-forms), vous pouvez l'ajouter à vos modèles et pages. Il existe plusieurs façons d'ajouter un formulaire à un modèle, en fonction de votre cas d'utilisation : * [Utilisation du module de formulaire par défaut](#the-default-form-module) * [Ajout d'un champ de formulaire à un module personnalisé](#form-fields-in-custom-modules)[](#using-the-form-hubl-tag) * [Intégration à l'aide du code d'intégration de formulaire](#using-the-form-embed-code) ## Le module de formulaire par défaut Si votre modèle comporte [des zones de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas), les créateurs de contenu peuvent ajouter le [module de formulaire par défaut](/docs/cms/reference/modules/default-modules#form) à une page à partir de l'éditeur de page, puis configurer les options de formulaire dans la barre latérale gauche. Pour coder un module de formulaire directement dans un modèle avec des zones de glisser-déposer, mentionnez-le en tant que `dnd_module`. ```hubl theme={null} {% dnd_area "dnd_area" class='body-container body-container__landing', label='Main section' %} {% dnd_section vertical_alignment='MIDDLE' %} {% dnd_column width=6, offset=6 %} {% dnd_row %} {% dnd_module path='@hubspot/form' %} {% end_dnd_module %} {% end_dnd_row %} {% end_dnd_column %} {% end_dnd_section %} {% end_dnd_area %} ``` Pour ajouter un module de formulaire à un modèle en dehors d'une zone de glisser-déposer, mentionnez-le plutôt comme un `module` standard. ```hubl theme={null} {% module "form" path="@hubspot/form" form={ "form_id": "9e633e9f-0634-498e-917c-f01e355e83c6", "response_type": "redirect", "message": "Thanks for submitting the form.", "redirect_id": null, "redirect_url": "http://www.google.com" } %} ``` Avec l'une ou l'autre implémentation, vous pouvez ajouter des paramètres au libellé de module pour spécifier des paramètres tels que le formulaire à utiliser et les options de redirection, comme indiqué dans l'exemple de code ci-dessus. Voir la [documentation des modules par défaut](/docs/cms/reference/modules/default-modules#form) pour plus d'informations sur les paramètres disponibles. ### Cloner le module par défaut En plus d'utiliser le module par défaut tel quel, vous pouvez le cloner pour le rendre modifiable, ce qui vous permet de le personnaliser au besoin. Par exemple, vous pouvez cloner le module de formulaire par défaut, ajouter un champ de couleur, puis envelopper le code HTML du module dans un libellé `
` avec un style pour ajouter la couleur en arrière-plan : * Dans le gestionnaire de conception de la barre latérale gauche, accédez au dossier **@hubspot**, puis cliquez avec le bouton droit sur **form.module** et sélectionnez **Cloner le module**. ![clone-form-module](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/clone-form-module.png) * Dans la barre latérale droite, cliquez sur **Ajouter un champ**, puis sélectionnez **Couleur**. * Ajoutez un libellé `
` autour du contenu HTML, puis ajoutez un style pour référencer le champ de couleur, tel que : `
` ![default-form-module-clone-section](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/default-form-module-clone-section.png) ## Champs de formulaire dans les modules personnalisés Lors de la création d'un module personnalisé, vous pouvez y inclure un formulaire en ajoutant un [champ de formulaire](/docs/cms/reference/fields/module-theme-fields#form), ainsi que le bloc de code du champ au module HTML. Par exemple, vous pouvez ajouter un formulaire de demande de consultation à un module qui contient une image d'un produit et une proposition de valeur descriptive. Pour ajouter un champ de formulaire à un module personnalisé à partir du gestionnaire de conception : * Dans la barre latérale droite de l'éditeur de module, cliquez sur **Ajouter un champ**, puis sélectionnez **Formulaire**. ![design-manager-select-form-field](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/design-manager-select-form-field.png) * Après avoir ajouté le champ, passez la souris sur le champ dans la barre latérale droite, puis cliquez sur **Actions** et sélectionnez **Copier le bloc de texte**. ![module-field-copy-snippet](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/module-field-copy-snippet.png) * Collez le bloc de texte dans le champ HTML du module. ![module-field-paste-snippet](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/module-field-paste-snippet.png) ### Limiter les options de formulaire dans l'éditeur Une fois ajouté à une page, les créateurs de contenu ont généralement le contrôle sur de nombreux aspects du formulaire, y compris le formulaire à utiliser et les champs de formulaire eux-mêmes. Cependant, vous pouvez limiter la quantité de contrôle donnée dans l'éditeur de page en modifiant [localement](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) le fichier `fields.json` du module de formulaire pour inclure les champs suivants : | Paramètre | Type | Description | | - | - | - | | `disable_inline_form_editing` | Chaîne | Permet de définir la propriété `disable_inline_form_editing` sur la valeur `true` pour masquer tous les contrôles de modification de formulaire intraligne dans le module de formulaire. Cela inclut les champs du formulaire, le texte du bouton d'envoi, les options de confidentialité et de consentement des données et le CAPTCHA. | | `required_property_types` | Tableau | Un tableau qui indique les formulaires pouvant être sélectionnés en fonction des types de propriétés des champs de formulaire. Les valeurs sont : `"CONTACT"`, `"COMPANY"` et `"TICKET"`. | Par exemple, si vous avez créé un module qui ne doit être utilisé que pour les formulaires permettant aux visiteurs de contacter les différents services de votre entreprise, vous pouvez autoriser les créateurs de contenu à ne sélectionner que les formulaires qui utilisent les propriétés des tickets. ```json theme={null} // Form field { "id": "843b4f0f-0ed7-5b10-e86a-5cc8a0f11a0c", "name": "form_field_1", "display_width": null, "label": "Form", "required": false, "locked": false, "type": "form", "disable_inline_form_editing": true, "required_property_types": ["TICKET"], "default": { "response_type": "inline", "message": "Thanks for submitting the form." } } ``` ## Utiliser le code d'intégration de formulaire Lorsqu'un module ou une balise HubL n'est pas la solution idéale, ou si vous souhaitez ajouter un formulaire à une page externe, vous pouvez l'intégrer à la place en utilisant le [code d'intégration de formulaire](https://knowledge.hubspot.com/fr/forms/how-can-i-share-a-hubspot-form-if-im-using-an-external-site#add-the-form-embed-code). Vous pouvez également personnaliser le code d'intégration du formulaire pour étendre les fonctionnalités du formulaire. Affichez toutes les options de personnalisation du code d'intégration de formulaire et plus encore dans le guide de référence des formulaires. > [!WARNING] > > ### Remarque : > > * Les options de personnalisation de formulaire sont uniquement disponibles pour les formulaires créés dans HubSpot qui ont été [définis comme HTML brut](https://knowledge.hubspot.com/fr/forms/how-can-i-share-a-hubspot-form-if-im-using-an-external-site#with-css-in-your-external-stylesheet-marketing-hub-professional-enterprise-or-legacy-marketing-hub-basic-only). Le compte HubSpot doit disposer d'un abonnement ***Marketing Hub*** ou ***Content Hub*** *Pro* ou *Entreprise*. > * Les formulaires HubSpot ne doivent être chargés qu'à l'aide du fichier JavaScript hébergé par HubSpot. Faire une copie du code d'intégration du formulaire et l'héberger soi-même n'est pas pris en charge. Les améliorations apportées par HubSpot pour améliorer la sécurité, l'antispam, l'accessibilité et les performances ne se répercuteront pas sur votre formulaire si vous décidez d'héberger vous-même le code intégré de formulaire HubSpot. Vous trouverez ci-dessous un exemple de code d'intégration de formulaire sans aucune personnalisation. ```html theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `portalId` | Nombre ou chaîne | L'ID du compte HubSpot dans lequel le formulaire a été créé. Il est utilisé pour récupérer la définition du formulaire. | | `formId` | Chaîne | L'ID du formulaire, qui est utilisé pour récupérer la définition du formulaire. | | `region` | String | La [région](https://knowledge.hubspot.com/fr/account-security/hubspot-cloud-infrastructure-and-data-hosting-frequently-asked-questions) du compte dans laquelle le formulaire a été créé. Il est utilisé pour récupérer la définition du formulaire. Les valeurs possibles sont : `na1` ou `eu1`. | ### Ajouter une internationalisation Par défaut, HubSpot fournit un nombre de messages de validation dans de nombreuses langues différentes, auxquels vous pouvez accéder à l'aide du paramètre `locale`. Vous pouvez également ajouter des langues personnalisées ou remplacer les messages d'erreur et les mois/jours du sélecteur de date affichés sur le formulaire à l'aide du paramètre `translation`. Découvrez-en davantage sur l'internationalisation et les messages d'erreur de validation de formulaire dans la [documentation de référence sur les formulaires](https://developers.hubspot.fr/docs/reference/cms/forms). ```js theme={null} hbspt.forms.create({ portalId: "", formId: "", locale: "en", translations: { en: { fieldLabels: { email: "Electronic mail", }, required: "Hey! That's required!", submitText: "Custom Submit Button Text", submissionErrors: { MISSING_REQUIRED_FIELDS: "Please fill in all required fields!", }, }, }, }); ``` ## Événements de formulaires Les formulaires offrent deux façons de lier des fonctionnalités à des événement : les rappels dans le code intégré de formulaire HubSpot et les événements de formulaire global. Pour en savoir plus sur les rappels de code d'intégration de formulaire disponibles et les événements de formulaire globaux, consultez la [documentation de référence sur les formulaires](https://developers.hubspot.fr/docs/reference/cms/forms). ```js theme={null} // Example form embed code callback hbspt.forms.create({ portalId: "", formId: "", onBeforeFormSubmit: function ($form) { // YOUR SCRIPT HERE }, }); // Example listener window.addEventListener("message", event => { if (event.data.type === "hsFormCallback" && event.data.eventName === "onFormSubmitted") { someAnalyticsLib("formSubmitted"); console.log("Form Submitted! Event data: ${event.data}"); } }); ``` ## Style de formulaire Bien que HubSpot propose [un style de formulaire à partir d'un paramètre global](https://knowledge.hubspot.com/fr/forms/set-global-form-colors-and-fonts) et [un niveau de paramètre spécifique au formulaire](https://knowledge.hubspot.com/fr/forms/create-forms#style-and-preview-your-form), vous pouvez également créer un style de formulaire en fonction de son ajout à vos pages CMS. > [!WARNING] > > ### Remarque : > > Tous les formulaires générés sur le CMS Hub (sauf via le code d'intégration de formulaire) ignoreront les styles configurés via les paramètres de formulaire globaux ou les paramètres spécifiques à chaque formulaire. ### Styliser des formulaires via le module de formulaire par défaut ou la balise HubL Les formulaires HubSpot ajoutés aux pages HubSpot peuvent être stylisés à l'aide de la CSS de votre site web. HubSpot comprend un certain nombre de classes et d'attributs différents sur les formulaires générés où vous pouvez appliquer un style. Pour commencer, veuillez consulter la [CSS de formulaire du boilerplate HubSpot](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/css/elements/_forms.css), qui présente les bonnes pratiques pour styliser les formulaires. ### Styliser des formulaires via un module personnalisé Les formulaires à l'intérieur de modules personnalisés peuvent être stylisés via une CSS dans le volet CSS du module dans le gestionnaire de conception. En étendant la CSS au module, le style accompagnera le module chaque fois qu'il sera ajouté à une page. Il est recommandé d'ajouter un encadrement au formulaire, puis d'utiliser ce wrapper en tant que sélecteur de niveau principal pour la CSS. Cela empêchera le style de formulaire de votre module personnalisé d'être remplacé par des styles supplémentaires dans la feuille de style principale de vos sites web. Voici une capture d'écran du module personnalisé avec un style de formulaire ajouté au volet CSS. ![Module personnalisé avec CSS](https://cdn2.hubspot.net/hubfs/53/5Cdocs/forms/form-module-css-pane-4.jpg) ### Définir un style personnalisé pour les formulaires intégrés Si vous disposez d'un abonnement ***Marketing Hub*** ou ***CMS Hub*** *Pro* ou *Entreprise*, vous pouvez utiliser les définitions de variables CSS pour définir des styles globaux, personnaliser des boutons et d'autres entrées, ainsi que styliser vos formulaires à plusieurs étapes et vos barres de progression. Découvrez-en davantage sur l'[application de définitions CSS personnalisées à votre formulaire intégré](https://developers.hubspot.fr/docs/reference/cms/forms#define-custom-styling-for-embedded-forms-using-css). ### Styliser des formulaires ajoutés via le code d'intégration de formulaire Lorsque vous utilisez le code d'intégration de formulaire, vous pouvez styliser le formulaire en utilisant les [paramètres de style de formulaire globaux](https://knowledge.hubspot.com/fr/forms/set-global-form-colors-and-fonts) ou en utilisant la CSS de votre site web. L'utilisation des paramètres de style de formulaire globaux vous permet de configurer les paramètres par défaut pour chaque formulaire du compte. Vous pouvez également [remplacer ces styles pour un formulaire dans l'éditeur de formulaire](https://knowledge.hubspot.com/fr/forms/create-forms#style-and-preview-your-form). ![Styles de formulaire globaux](https://cdn2.hubspot.net/hubfs/53/5Cdocs/forms/global-form-styling-options-4.png) Si vous disposez d'un abonnement ***Marketing Hub*** ou ***CMS Hub*** *Pro* ou *Entreprise*, vous pouvez sélectionner l'option **Définir comme formulaire HTML brut** lors de la création d'un formulaire. Ce paramètre restitue le formulaire en HTML au lieu d'un iFrame, ce qui facilite le style du formulaire incorporé avec la CSS. Découvrez-en davantage sur le [style des formulaires intégrés dans la base de connaissances](https://knowledge.hubspot.com/fr/forms/how-can-i-share-a-hubspot-form-if-im-using-an-external-site). ![Paramètre Définir comme formulaire HTML brut](https://cdn2.hubspot.net/hubfs/53/5Cdocs/forms/set-as-raw-html-form-4.jpg) # Masquer les modules et les sections dans l'éditeur de page Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/hide-modules-and-sections # Menus et navigation Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/menus-and-navigation HubSpot dispose de quelques outils intégrés pour faciliter la création et la gestion de ces menus, et, côté code, de multiples solutions pour l'affichage des menus afin que vous puissiez choisir la solution qui convient le mieux à votre site web. Incluez des menus de navigation sur votre site Web pour aider les utilisateurs à trouver les informations dont ils ont besoin. Les menus de navigation sont souvent situés dans les en-têtes, les barres latérales et les pieds de page d'un site web. HubSpot fournit quelques solutions intégrées pour ajouter des menus à vos pages, en fonction de votre cas d'utilisation, mais vous pouvez également créer vos propres menus si nécessaire. Votre compte comprend également une [page de paramètres pour la création et la gestion des menus](#navigation-settings), que les différentes méthodes de menu peuvent référencer. * **Menus par défaut :** HubSpot fournit deux types de menus par défaut qui peuvent être utilisés selon les besoins. Ces menus peuvent être ajoutés en tant que modules dans l'éditeur de page dans des [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) ou dans des modèles, ou vous pouvez les ajouter à des modules personnalisés à l'aide de [balises HubL](#menu-hubl-tags). * **Menu :** couramment utilisé pour la navigation globale, comme dans l'en-tête ou le pied de page du site Web, le menu standard par défaut vous permet de sélectionner un menu que vous avez configuré dans vos paramètres de navigation, puis de le configurer davantage avec des options telles que les niveaux maximaux, les paramètres d'affichage et l'orientation. * **Menu simple :** couramment utilisé pour la navigation spécifique aux pages, telles que les pages piliers, le module de menu simple vous permet de créer des menus au niveau de la page. Plutôt que de faire référence à un menu que vous avez créé dans vos paramètres de navigation, les éléments de menu simples sont gérés dans l'éditeur de contenu et ont moins d'options de configuration que le menu standard. Cela permet aux créateurs de contenu de mettre à jour les menus sur des pages spécifiques au besoin sans affecter la navigation globale. * \*\*Menus personnalisés : \*\*lorsque les options de menu par défaut ne correspondent pas à vos besoins, vous pouvez créer vos propres solutions personnalisées. Cela peut aller de la création de modules personnalisés qui incluent des menus par défaut à l'aide du [menu standard et des balises HubL simple\_menu](#menu-hubl-tags), à l'utilisation de la [fonction menu() HubL](#menu-hubl-function) pour créer une solution entièrement personnalisée à l'aide de groupes de répéteurs ou HubDB. Cela étant dit, lors de la création d'un menu personnalisé compliqué, vous devez garder à l'esprit l'expérience de l'éditeur. Dans de nombreux cas, il peut être plus logique d'utiliser le `menu` et les champs `simple_menu` en tandem avec la fonction `menu()` afin qu'il y ait un équilibre entre la solution personnalisée et l'expérience d'édition intuitive. Ci-dessous, découvrez les différentes façons d'inclure des menus sur les pages et comment gérer les paramètres de navigation dans HubSpot. ## Paramètres de navigation Dans chaque compte, HubSpot inclut des [paramètres de navigation](https://knowledge.hubspot.com/cos-general/set-up-your-site-s-navigation-menus) afin que vous puissiez créer des menus multiniveaux à référencer dans les modules de menu et les balises. Cela crée une source unique de vérité pour un ensemble d'éléments de menu, vous n'aurez donc besoin de mettre à jour un menu qu'une seule fois pour mettre à jour toutes les pages référençant ce menu. Vous pouvez créer autant de menus que nécessaire, et chaque menu est livré avec des options de clonage, de suppression, de renommage et d'affichage de l'historique des révisions. Pour créer et gérer des menus dans HubSpot, accédez à **Paramètres** > **Site Web** > **Menus de navigation**. En savoir plus sur les paramètres de navigation dans la [Base de connaissances de HubSpot](https://knowledge.hubspot.com/website-pages/set-up-your-site-s-navigation-menus). ![Zone des paramètres de navigation](https://cdn2.hubspot.net/hubfs/53/image2-4.png) Lorsque vous travaillez avec des menus dans HubL, vous devrez peut-être référencer l'ID du menu. Cela ne s'applique pas aux menus simples, car leurs éléments de menu sont définis dans l'éditeur. Lors de la création d'un module personnalisé, le moyen le plus simple d'obtenir l'ID de menu est de créer un champ de menu. Ce champ permet au créateur de contenu de sélectionner un menu dans un menu déroulant et renvoie l'ID de menu. Si vous avez besoin de coder en dur l'ID du menu, vous pouvez le récupérer à partir de l'URL lorsque vous affichez le menu dans la page des paramètres de navigation. ![menu-id-in-url](https://www.hubspot.com/hubfs/Knowledge_Base_2023_2024/menu-id-in-url.png) Notez que, lorsque vous arrivez pour la première fois sur la page, l'ID de menu par défaut ne s'affiche pas dans l'URL. Pour obtenir l'ID de ce menu par défaut, vous devrez sélectionner un autre menu, puis sélectionner à nouveau le menu par défaut. > [!NOTE] > > Une bonne pratique pour les en-têtes de site, qui contiennent souvent la longue navigation principale, est de fournir un ["lien « passer au contenu »](/docs/cms/best-practices/improve-existing-sites/accessibility#adding-a-skip-to-content-link). Cela permet aux utilisateurs qui naviguent au clavier d'éviter les menus trop longs. ## Balises de menu HubL Utilisez le `menu` et les balises HubL `simple_menu` pour ajouter des fonctionnalités de menu aux modules personnalisés. L'ajout de la balise à un module affichera le menu sur la page. Pour permettre aux créateurs de contenu de configurer les options du menu dans l'éditeur de page, vous devrez également inclure le [menu](/docs/cms/reference/fields/module-theme-fields#form) ou le [champ de menu simple](/docs/cms/reference/fields/module-theme-fields#simple-menu) dans le module. Ci-dessous, en savoir plus sur chaque type de balise de menu. ### Menu standard La [balise Menu HubL](/docs/cms/reference/hubl/tags/standard-tags#menu) génère un menu HTML standard avec des noms de classe déjà fournis pour les niveaux de profondeur, les états actifs et si l'élément a des enfants. La balise menu peut être utilisée dans des [modules personnalisés](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview), ce qui permet de créer facilement des menus de navigation pour la navigation principale et la navigation dans les barres latérales. Cette balise attend que vous fournissiez [l'ID du menu](#menu-id). ```hubl theme={null} {% menu "menu" %} {% menu "my_menu" id=456, site_map_name='Default', overrideable=False, root_type='site_root', flyouts='true', max_levels='2', flow='horizontal', label='Advanced Menu' %} ``` ### Menu simple La balise [Menu simple](/docs/cms/reference/hubl/tags/standard-tags#simple-menu) fonctionne comme la balise Menu en générant un [menu HTML standard](https://developers.hubspot.fr/docs/guides/cms/content/default-menu-markup) avec des noms de classe pour les niveaux de profondeur, les états actifs et si l'élément a des enfants. La différence est que cette balise attend que vous fournissiez un dictionnaire de la structure du menu au lieu d'un ID de menu. C'est utile lorsque vous souhaitez que les champs d'un module déterminent la structure d'un menu au lieu d'utiliser les paramètres de navigation. Par exemple, vous pouvez utiliser ce type de module pour la table des matières d'une page pilier. ```hubl theme={null} {% simple_menu menu_tree=[{"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Home", "linkTarget": null, "linkUrl": "http://www.hubspot.com", "children": [], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "About", "linkTarget": null, "linkUrl": "http://www.hubspot.com/internet-marketing-company", "children": [{"contentType": null, "subCategory": null, "pageLinkName": null, "linkUrl": "http://www.hubspot.com/company/management", "isPublished": false, "children": [], "linkParams": null, "linkLabel": "Our Team", "linkTarget": null, "pageLinkId": null, "categoryId": null, "isDeleted": false}], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Pricing", "linkTarget": null, "linkUrl": "http://www.hubspot.com/pricing", "children": [], "isDeleted": false}] %} ``` ## Modules de menu par défaut HubSpot fournit des modules par défaut que vous pouvez ajouter aux modèles codés, ainsi que des pages dans l'éditeur de pages lorsqu'un modèle comprend des [zones de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas). Chaque module aura une expérience d'édition différente, le menu standard ayant plus d'options de configuration que le menu simple. Comme les modules ne peuvent pas être imbriqués, vous ne pouvez pas les placer à l'intérieur d'autres modules. Vous devriez plutôt utiliser les [balises Menu ou Menu simple](#hubl-menu-tags). ```hubl theme={null} {% module "main_nav" path="@hubspot/menu", label="Menu" id="123456" %} {% module "menu" path="@hubspot/simple_menu", label="Simple Menu" menu_tree=[{"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Home", "linkTarget": null, "linkUrl": "http://www.hubspot.com", "children": [], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "About", "linkTarget": null, "linkUrl": "http://www.hubspot.com/internet-marketing-company", "children": [{"contentType": null, "subCategory": null, "pageLinkName": null, "linkUrl": "http://www.hubspot.com/company/management", "isPublished": false, "children": [], "linkParams": null, "linkLabel": "Our Team", "linkTarget": null, "pageLinkId": null, "categoryId": null, "isDeleted": false}], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Pricing", "linkTarget": null, "linkUrl": "http://www.hubspot.com/pricing", "children": [], "isDeleted": false}] %} ``` ### Balisage de menu standard Les modules de menu par défaut sont alimentés par leurs balises de menu HubL respectives (`menu` et `simple_menu`) pour générer du HTML de menu standard. Comme les autres modules HubSpot, les modules de menu sont encadrés dans un balisage de module d'encadrement. Ces balises `div` et `span` rendent le module éditable avec l'éditeur de contenu. Le balisage de menu des modules de menu et de menu simple est le même, à l'exception de certaines des classes appliquées aux conteneurs d'encadrement et de menu. ```html theme={null} ``` Comme indiqué ci-dessus, le menu réel s'affiche sous la forme d'un `ul` encadré par une `div` avec la classe `hs-menu-wrapper`. Cet encadrement aura des classes supplémentaires en fonction de la configuration du module dans l'éditeur de page, telles que l'activation des lanceurs. En savoir plus sur [les classes ajoutées par ces paramètres](#classes-added-by-settings) ci-dessous. Dans l'`ul`, chaque élément de menu est une balise `a` encadrée dans un `li`. La balise `li` possède une classe qui indique la profondeur de l'élément dans l'arborescence des menus (par exemple : `hs-menu-depth-1`). Lorsqu'un élément de menu contient un élément enfant imbriqué, le `li` correspondant aura la classe supplémentaire `hs-item-has-children`. Le menu enfant s'affiche sous la forme d'un `ul` imbriqué avec la classe `hs-menu-children-wrapper`. Lorsque vous visitez une page incluse dans votre arborescence de menus, la classe `active-branch` est ajoutée aux éléments `li` parents et une classe **`active`** est ajoutée à l'élément `li` particulier de cette page. ### Style de menu standard Au niveau du module, qu'il s'agisse de modifier un module de menu dans l'éditeur de page ou de modifier un champ de menu dans un module personnalisé, vous aurez quelques options de configuration. Les champs *Menu*, *Type de menu avancé* et *Niveaux max* vous permettent de contrôler que les éléments de menu sont rendus comme `li` dans le balisage de la page. Mais les options d'orientation et de lanceurs auront un impact sur les sélecteurs CSS ajoutés au menu de l'encadrement `div`. Vous pouvez ensuite cibler ces sélecteurs dans votre CSS. ![menu-options-in-editor](https://www.hubspot.com/hubfs/Knowledge_Base_2023_2024/menu-options-in-editor.png) Ci-dessous, en savoir plus sur les classes qui sont ajoutées au menu de l'encadrement `div` en fonction de ces paramètres de champ. | Classe | Description | | - | - | | `hs-menu-flow-horizontal` | Ajouté à l'encadrement `div` lorsque le menu est réglé sur l'orientation horizontale. | | `hs-menu-flow-vertical` | Ajouté à l'encadrement `div` lorsque le menu est réglé sur l'orientation verticale. | | `flyouts` | Ajouté à l'encadrement `div` lorsque l'option *Activer les lanceurs* est sélectionnée. | | `no-flyouts` | Ajouté à l'encadrement `div` lorsque *Activer les lanceurs* n'est pas sélectionné. | Pour vous aider à commencer à styliser les menus, voici quelques exemples de sélecteurs CSS qui peuvent être utilisés pour styliser la balise de menu et le module de menu par défaut. ```css theme={null} /* Menus */ .hs-menu-wrapper ul { /* Targets all unordered lists within HubSpot menus */ } /* Horizontal Menu ========================================================================== */ .hs-menu-wrapper.hs-menu-flow-horizontal ul { /* Targets all unordered lists within horizontal menus */ } .hs-menu-wrapper.hs-menu-flow-horizontal ul li { /* Targets all list items within horizontal menus */ } .hs-menu-wrapper.hs-menu-flow-horizontal ul li a { /* Targets all links within horizontal menus */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul { /* Targets the top-level unordered list within horizontal menus */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li.hs-menu-depth-1 { /* Targets top-level list items within the top-level unordered list */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li a { /* Targets top-level list links within the top-level unordered list */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li.hs-item-has-children { /* Targets list items with children with the top-level unordered list */ } .hs-menu-wrapper.hs-menu-flow-horizontal.flyouts > ul li.hs-item-has-children ul.hs-menu-children-wrapper { /* Targets second-level unordered lists when flyouts are enabled (for styling dropdowns) */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li.hs-item-has-children ul.hs-menu-children-wrapper li a { /* Targets links within second-level unordered lists */ } .hs-menu-wrapper.hs-menu-flow-horizontal.flyouts > ul li.hs-item-has-children ul.hs-menu-children-wrapper li.hs-item-has-children ul.hs-menu-children-wrapper { /* Targets third-level unordered lists (for styling dropdowns)*/ } .hs-menu-wrapper.hs-menu-flow-horizontal.flyouts > ul li.hs-item-has-children:hover > ul.hs-menu-children-wrapper { /* Targets second-level unordered list when top-level menu item is hovered (use to reveal dropdowns) */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li.hs-item-has-children.active-branch { /* Targets top-level active branch unordered list */ } .hs-menu-wrapper.hs-menu-flow-horizontal > ul li.hs-item-has-children.active-branch > ul.hs-menu-children-wrapper { /* Targets second-level unordered list within active branch */ } .hs-menu-wrapper.hs-menu-flow-horizontal li.active a { /* Targets the link within the active list item */ } /* Vertical Menu ========================================================================== */ .hs-menu-wrapper.hs-menu-flow-vertical ul { /* Targets all unordered lists within vertical menus */ } .hs-menu-wrapper.hs-menu-flow-vertical ul li a { /* Targets all list items within vertical menus */ } .hs-menu-wrapper.hs-menu-flow-vertical ul li a { /* Targets all links within vertical menus */ } .hs-menu-wrapper.hs-menu-flow-vertical > ul { /* Targets the top-level unordered list within vertical menus */ } .hs-menu-wrapper.hs-menu-flow-vertical > ul li.hs-menu-depth-1 > a { /* Targets top-level links in vertical menus */ } .hs-menu-wrapper.hs-menu-flow-vertical > ul li.hs-item-has-children { /* Targets top-level list items with children */ } /* No flyouts ========================================================================== */ .hs-menu-wrapper.hs-menu-flow-vertical.no-flyouts .hs-menu-children-wrapper { /* Targets child menus when flyouts are disabled */ } .hs-menu-wrapper.hs-menu-flow-horizontal.no-flyouts > ul li.hs-item-has-children ul.hs-menu-children-wrapper { /* Targets second-level child menus when flyouts are disabled */ } ``` ## Fonction HubL menu() La fonction [menu()](/docs/cms/reference/hubl/functions#menu) existe pour vous permettre de créer des structures de menu entièrement personnalisées. Elle renvoie un objet que vous pouvez itérer pour générer un menu. De nombreuses [propriétés sont fournies pour les éléments du menu](/docs/cms/reference/hubl/variables#menu-node-variables). Sachez que lorsque vous utilisez la fonction Menu [, vous êtes entièrement responsable de l'accessibilité de votre menu](/docs/cms/best-practices/improve-existing-sites/accessibility), de sa structure et de son style. ```hubl theme={null} {% set node = menu(987) %} {% for child in node.children %} {{ child.label }}
{% endfor %} {% set default_node = menu("default") %} {% for child in default_node.children %} {{ child.label }}
{% endfor %} ``` Le [Thème Boilerplate du CMS HubSpot](https://github.com/HubSpot/cms-theme-boilerplate) contient un [exemple de module de menu construit avec la fonction menu()](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/modules/menu.module/module.html). Vous pouvez le modifier en fonction de vos besoins pour créer des menus complexes. # Vue d'ensemble des modules Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview Il est essentiel de comprendre les modules pour pouvoir comprendre HubSpot CMS et sa puissance. Les modules sont des composants réutilisables qui peuvent être utilisés dans des modèles ou ajoutés à des pages via des zones de glisser-déposer et des colonnes flexibles. Il est essentiel de comprendre les modules pour pouvoir comprendre HubSpot CMS et sa puissance. Les modules sont des composants réutilisables qui peuvent être utilisés dans des modèles ou ajoutés à des pages via des [zones de glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial) et des[ colonnes flexibles](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/standard-tags#flexible-column). En plus d'utiliser les modules fournis par HubSpot, les développeurs peuvent créer leurs propres modules pour tout, des témoignages aux galeries de photos. Les modules sont créés [à l'aide des outils de développement locaux](/docs/cms/start-building/building-blocks/modules/overview) ou [en utilisant le Gestionnaire de conception](https://knowledge.hubspot.com/cos-general/create-and-edit-modules). Un module est composé de deux parties : 1. Une [interface utilisateur](#the-user-interface-for-editing) créée par une liste de champs que les utilisateurs verront lors de l'édition d'une instance de module. 2. Un fragment de modèle HTML+HubL avec CSS et JS associés qui définissent comment le HTML sera généré ## Voici un exemple Pour mieux comprendre ce qu'est un module, examinons un module simple, « Membre de l'équipe ». Le module se compose d'une photo, du nom du membre de l'équipe, de son titre et d'une courte biographie. Il ressemble à une partie d'une page Web du CMS : ![Instance du module membre de l'équipe](https://cdn2.hubspot.net/hubfs/53/team-member-module-instance.png) ### L'interface utilisateur pour l'édition Le développeur construit l'interface utilisateur (IU) des modules en utilisant des champs. Le développeur choisit ensuite les champs à utiliser en fonction du type de module à construire, des données nécessaires et de l'expérience d'édition. Dans ce cas, le module comprend : 1. un champ d'image, pour la photo d'un membre de l'équipe 2. deux champs de texte, pour le nom et la fonction du membre de l'équipe 3. et un champ de texte enrichi, pour une courte biographie. Lorsqu'un créateur de contenu modifie un module, l'interface utilisateur est construite sur la base des champs que le développeur a ajoutés au module et de la façon dont chaque champ est configuré. ![Éditeur du module membre de l'équipe](https://cdn2.hubspot.net/hubfs/53/team-member-editor.png) ## Comparaison du module et de l'instance de module Il existe deux termes fréquemment utilisés concernant les modules. Il est important de comprendre la différence entre les deux. * **Module** -  : blocs de construction réutilisables qui peuvent être ajoutés aux modèles et aux pages. * **Instance de module** -  : les modules individuels rendus sur la page. Ils peuvent avoir des valeurs de champ distinctes et, par conséquent, avoir un aspect différent des autres instances de module du même module. ## Fields.json Les champs d'un module sont définis en JSON comme un tableau d'objets. Chaque champ a un nom, un type et une valeur par défaut. D'autres propriétés sont également disponibles en fonction du type de champ qui contrôle l'expérience d'édition. ```json theme={null} // fields.json [ { "name": "team_member_photo", "label": "Team Member Photo", "required": true, "responsive": true, "resizable": true, "type": "image", "default": { "src": "", "alt": "" } }, { "name": "team_member_name", "label": "Team member name", "required": true, "type": "text", "default": "Joshua Beck" }, { "name": "team_member_position", "label": "Team member position", "required": true, "type": "text", "default": "CEO, Co-Founder" }, { "name": "team_member_bio", "label": "Team member bio", "required": true, "type": "richtext", "default": "

Joshua has over 20 years of experience in the tech industry. He helped start this company in 2015 with the mission of helping people grow. In his spare time he loves hanging out with his kids, going to the beach, and cooking.

" } ] ``` Pour en savoir plus sur tous les champs disponibles, voir [Champs de module et de thème](https://developers.hubspot.fr/docs/reference/cms/fields/module-theme-fields). ### Utilisation des données du champ du module pour rendre le HTML Les valeurs de chaque champ sont disponibles dans le fragment HTML+HubL d'un module via une variable `module`. Les données de chaque champ sont accessibles via les propriétés de la variable du module. En utilisant le module membre de l'équipe comme exemple, le nom du membre de l'équipe est accessible via `{{ module.team_member_name }}`. ```hubl theme={null}
{{ module.team_member_image.alt }}

{{ module.team_member_name }}

{{ module.team_member_position }}

{{ module.team_member_bio }}
``` ## Utilisation des modules dans les modèles Les modules sont ajoutés aux modèles en utilisant la balise [module](https://developers.hubspot.fr/docs/reference/cms/modules/using-modules-in-templates#basic-module-syntax), [module\_block](https://developers.hubspot.fr/docs/reference/cms/modules/using-modules-in-templates#block-syntax) ou [dnd\_module](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas) et en indiquant le chemin d'accès au module comme paramètre. Les valeurs par défaut des champs d'un module peuvent également être remplacées au niveau du modèle en ajoutant des paramètres à la balise du module qui correspond au nom du champ, comme le montre la deuxième partie de l'exemple ci-dessous. ```hubl theme={null} {% module "unique_identifier" path="/modules/team-member.module" %} {# override default values in a module instance #} {% module "unique_identifier" path="/modules/team-member.module", team_member_name="Brian Halligan", team_member_position="CEO" %} ``` > [!NOTE] > > Les modules ne peuvent pas être imbriqués les uns dans les autres. La plupart du temps, lorsque vous voulez le faire c'est pour des raisons de mise en page. Les sections dans les [zones de glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/overview) sont souvent la meilleure solution. ## Les modules sont un excellent outil dans la boîte à outils d'accessibilité Les modules sont utilisés sur tout un site Web, parfois sur plusieurs pages, voire de nombreuses fois sur une page. C'est pourquoi l'[élaboration du HTML, de la CSS et du JS de votre module en tenant compte de l'accessibilité](https://developers.hubspot.fr/docs/guides/cms/content/accessibility) peut avoir un grand impact sur l'utilisation de votre site par les personnes handicapées ou non. ## Les modules peuvent faciliter la localisation De la même manière que pour l'accessibilité, élaborer des modules afin que tout le contenu du module soit basé sur des champs permet de le localiser ultérieurement. Par exemple, vous pouvez avoir un module « Articles à la une ». Au lieu de coder en dur le texte « Articles à la une », utilisez un champ de texte ou de texte enrichi. Le texte peut ensuite être modifié dans d'autres langues. Pour en savoir plus sur la localisation sur le CMS, allez à[ multi-langue](https://developers.hubspot.fr/docs/guides/cms/content/multi-language-content). ## Pour commencer Pour commencer, consultez notre tutoriel [Démarrer avec les modules](/docs/cms/start-building/building-blocks/modules/overview). ## Aller plus loin * [Configurer un module](https://developers.hubspot.fr/docs/reference/cms/modules/configuration) * [Utilisation de modules dans les modèles](https://developers.hubspot.fr/docs/reference/cms/modules/using-modules-in-templates) * [Modules par défaut](https://developers.hubspot.fr/docs/reference/cms/modules/default-modules) * [L'éditeur de module](/docs/cms/start-building/building-blocks/modules/overview) # Vue d'ensemble du thème Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/overview Développer des thèmes de CMS HubSpot qui permettent aux développeurs de construire des systèmes de conception dans lesquels les créateurs de contenu peuvent travailler. Un thème est un ensemble portable et contenu de ressources de développement conçues pour permettre d'éditer du contenu avec fluidité. Vous pouvez [créer des thèmes localement à l'aide de HubSpot CLI](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) en utilisant les outils, les technologies et les workflows que vous préférez. Les environnements et les comptes disposent de la portabilité des thèmes et de leurs fichiers associés. Apprenez à développer des thèmes avec la vidéo de présentation de la HubSpot Academy ci-dessous : ## Les thèmes en tant que package Les thèmes étant un ensemble, ils se présentent en cascade dans l'application HubSpot, à différents endroits, pour permettre une expérience de création de contenu efficace. Les développeurs peuvent utiliser des thèmes pour créer un système de conception permettant aux créateurs de contenu de travailler. Il est possible d'intégrer une certaine souplesse et des directives dans un thème pour répondre aux besoins de votre entreprise. ### Création de la page Lorsque les créateurs de contenu génèrent de nouvelles pages, ils sont invités à sélectionner le thème à partir duquel créer la page, puis à choisir le modèle à utiliser dans le thème. ![Choix du thème à l'intérieur de HubSpot](https://cdn2.hubspot.net/hubfs/53/theme%20selection.gif) L'image d'aperçu du thème, ainsi que d'autres configurations pour un thème, sont définies dans le [fichier theme.json](#theme-json). ### Champs du thème Les thèmes permettent aux développeurs de créer un ensemble de [champs de thème](#fields-json), similaires aux champs de module, qui donnent aux créateurs de contenu la possibilité de régler divers boutons et cadrans conçus par un développeur afin d'avoir un contrôle stylistique global d'un site web sans avoir à modifier le CSS. Les développeurs [utilisent HubL pour accéder aux valeurs des champs de thème](#using-theme-field-values) dans l'ensemble de leur CSS. Les créateurs de contenu utilisent l'éditeur de thème pour modifier les champs du thème, prévisualiser ces modifications par rapport aux modèles existants dans un thème, et publier leurs modifications. ![thèmes](https://cdn2.hubspot.net/hubfs/53/themes.gif) Les champs du thème sont définis par le [fichier fields.json d'un thème](#fields-json). Lorsque vous modifiez un thème en [mode test](/docs/cms/start-building/building-blocks/overview#test-mode), vous pouvez également copier les paramètres JSON du thème. Cela vous permet de coller toutes les mises à jour dans le fichier `fields.json` local du thème. ![copy-theme-settings-test-mode](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/copy-theme-settings-test-mode.png) ### Modules de thème Les modules d'un thème doivent être conçus spécifiquement pour être utilisés dans les modèles de ce thème. L'éditeur de contenu met l'accent sur ces modules de thème, ce qui permettra aux créateurs de contenu d'ajouter rapidement et facilement aux pages qu'ils construisent des modules conçus pour fonctionner correctement dans le contexte de cette page. Les modules par défaut et le reste des modules de votre compte HubSpot seront toujours disponibles. ![Modules de thème au sein d'un thème](https://cdn2.hubspot.net/hubfs/53/theme%20modules.png) Lors du développement d'un thème, vous pouvez [masquer les modules et les sections de l'éditeur de page](/docs/cms/start-building/building-blocks/modules/hide-modules-and-sections) pour créer une expérience de création de contenu plus rationalisée. ## Structure des fichiers du thème Un thème est un répertoire unique de fichiers. Vous pouvez inclure des fichiers HTML, CSS et Javascript, des modules et des fichiers supplémentaires organisés de n'importe quelle manière dans des sous-répertoires du dossier du thème parent. Deux fichiers JSON sont nécessaires pour construire un thème : `theme.json` et `fields.json`. Ces fichiers doivent être inclus dans le dossier racine du thème. Pour commencer avec un exemple, voir le [Boilerplate CMS HubSpot](https://github.com/HubSpot/cms-theme-boilerplate) ![structure des fichiers du thème](https://designers.hubspot.com/hs-fs/hubfs/theme%20file%20structure.png?width=599\&height=452\&name=theme%20file%20structure.png) > [!NOTE] > > Pour l'instant, les fichiers .json ne peuvent être créés et téléchargés sur un compte HubSpot que par le biais des [outils de développement local](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). ### theme.json Le fichier `theme.json` contient les méta-informations relatives au répertoire de votre thème, telles que le libellé lisible du thème, sa capture d'écran de prévisualisation et diverses configurations relatives au comportement du thème. Votre fichier `theme.json` ressemblera à ce qui suit : ```json theme={null} // theme.json { "label": "Cool Theme", "preview_path": "./templates/home-page.html", "screenshot_path": "./images/templates/homepage.jpg", "enable_domain_stylesheets": false, "version": "1.0", "author": { "name": "Jon McLaren", "email": "noreply@hubspot.com", "url": "https://theme-provider.com/" }, "documentation_url": "https://theme-provider.com/cool-theme/documentation", "license": "./license.txt", "example_url": "https://theme-provider.com/cool-theme/demo", "is_available_for_new_content": true } ``` | Paramètre | Type | Description | | - | - | - | | `label` | Chaîne |  : le libellé lisible du thème est utilisé là où le thème est affiché dans l'application HubSpot, comme dans l'écran de sélection des modèles et l'éditeur de thème. | | `preview_path` | Chaîne |  : un chemin relatif vers un fichier de modèle dans le thème qui devrait être le modèle par défaut est utilisé lors de la prévisualisation d'un thème dans l'éditeur de thème. | | `screenshot_path` | Chaîne |  : un chemin d'accès relatif vers un fichier image est utilisé pour donner une instantanée de l'aspect du thème là où la sélection du thème a lieu, comme dans l'écran de sélection du modèle. | | `enable_domain_stylesheets` | Booléen |  : une activation ou désactivation des feuilles de style attachées à des domaines dans les paramètres du site web et incluses dans les modèles du thème. La valeur par défaut est définie sur `false`. | | `version` | Chaîne |  : un numéro de version entier prenant en charge les versions `.`. | | `Author` | Objet |  : un champ d'objet pour fournir des informations personnelles en tant que fournisseur du thème.`name` Le nom du fournisseur. `email` L'adresse e-mail du service client du fournisseur. `url` Le site web du fournisseur. | | `documentation_url` | Chaîne |  : le lien vers la documentation associée au thème. | | `example_url` | Chaîne |  : le lien vers l'exemple réel du thème. | | `license` | String |  : un [Identifiant SPDX](https://spdx.org/licenses/) valide ou chemin d'accès relatif à la licence dans votre thème. Cette licence dicte l'utilisation et la modification autorisées par le créateur du thème. Utile lors du téléchargement sur le marketplace. | | `is_available_for_new_content` | Booléen |  : le booléen qui détermine si un thème s'affiche dans la page du créateur de contenu pour être sélectionné. La valeur par défaut est définie sur `true`. | ### fields.json Le fichier `fields.json` contrôle les champs et groupes de champs disponibles dans l'éditeur de thème, y compris les [champs de style](https://developers.hubspot.fr/docs/guides/cms/content/fields/overview#style-fields). Les champs que vous incluez dépendront du degré de contrôle que vous souhaitez donner aux créateurs de contenu dans l'éditeur de page. Le nombre de champs disponibles pour les thèmes est plus limité que pour les modules, car les champs de thème sont mieux adaptés aux options de style, tandis que le [contenu global](/docs/cms/start-building/building-blocks/global-content) est mieux adapté au contenu du thème. Par exemple, plutôt que d'ajouter un champ de texte dans le fichier `field.json` du thème pour le slogan de votre site, il devrait être ajouté en tant que module global afin que les créateurs de contenu puissent mettre à jour le slogan à partir de l'éditeur de page plutôt que de l'éditeur de thème. Les champs qui peuvent être utilisés dans les thèmes sont les suivants : * [Booléen](/docs/cms/reference/fields/module-theme-fields#boolean) * [Bordure](/docs/cms/reference/fields/module-theme-fields#border) * [Choix](/docs/cms/reference/fields/module-theme-fields#choice) * [Couleur](/docs/cms/reference/fields/module-theme-fields#color) * [Police](/docs/cms/reference/fields/module-theme-fields#font) * [Image](/docs/cms/reference/fields/module-theme-fields#image) * [Nombre](/docs/cms/reference/fields/module-theme-fields#number) * [Espacement](/docs/cms/reference/fields/module-theme-fields#spacing) Obtenez plus d'informations sur les options possibles pour les champs de thème en consultant la [documentation sur les modules et les champs de thème](/docs/cms/reference/fields/module-theme-fields). #### Utilisation des valeurs des champs de thème Pour accéder aux valeurs des champs, utilisez la notation par points et préfixez le chemin d'accès à la valeur dans `fields.json` avec le thème. Vous pouvez utiliser la valeur d'un champ thématique dans vos feuilles de style en utilisant une syntaxe similaire à `{{ theme.path.to.value }}`. Par exemple, le champ de police décrit ci-dessous : ```json theme={null} // fields.json [ { "type": "group", "name": "typography", "label": "Typography", "children": [ { "type": "font", "name": "h1_font", "label": "Heading 1", "load_external_fonts": true, "default": { "color": "#000", "font": "Merriweather", "font_set": "GOOGLE", "variant": "700", "size": "48" } } ] } ] ``` Serait référencé en CSS par : ```css theme={null} h1 { font-size: {{ theme.typography.h1_font.size }}px; font-family: {{ theme.typography.h1_font.font }}; color: {{ theme.typography.h1_font.color }}; text-decoration: {{ theme.typography.h1_font.styles.text-decoration }}; font-style: {{ theme.typography.h1_font.styles.font-style }}; font-weight: {{ theme.typography.h1_font.styles.font-weight }}; } ``` ## Aperçu d'un thème Les développeurs ont parfois besoin de s'assurer du bon fonctionnement de leurs champs sans avoir d'impact sur les pages réelles. C'est justement le but du mode de test des thèmes. ### Mode de test Le mode de test vous offre un environnement sûr pour tester les champs de votre thème et vous assurer qu'ils fonctionnent correctement. L'interface ressemble exactement à l'[aperçu/éditeur de thème que les créateurs de contenu peuvent voir](https://knowledge.hubspot.com/website-pages/edit-your-global-theme-settings#edit-theme-settings), mais elle garantit que vous ne modifierez pas les paramètres de votre site web. Pour se protéger contre les modifications accidentelles des paramètres du thème, la publication est bloquée lorsque vous êtes en mode test. Vous êtes en mode test si `?testmode=true` apparaît dans votre barre d'adresse, et si une icône de mode test s'affiche dans l'en-tête de l'éditeur de thème. ![Mode de test/prévisualisation de thème](https://f.hubspotusercontent00.net/hubfs/53/theme-test-mode.png) Deux méthodes permettent d'activer le mode test : * Pour activer le mode test depuis le gestionnaire de conception : * Dans le gestionnaire de conception, sélectionnez votre **thème** dans le Finder. * En haut du menu latéral de gauche, cliquez sur le bouton **Aperçu**. ![copy-theme-settings-test-mode-design-manager (1)](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/copy-theme-settings-test-mode-design-manager%20\(1\).png) * Pour activer le mode test à partir de l'éditeur de la page : * Dans l'éditeur de page, cliquez sur l'onglet **Conception** dans le menu latéral de gauche, puis cliquez sur **Modifier les paramètres du thème**. ![page-editor-edit-theme](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/page-editor-edit-theme.png) Ajoutez `?testmode=true` à l'URL, puis appuyez sur **Entrée**. Vous passerez alors en mode test. Vous pouvez aussi ouvrir les paramètres de votre thème à partir de l'éditeur de page. Une fois entré, ajoutez le paramètre de requête `?testmode=true` à l'URL dans votre barre d'adresse. ## Ressources associées * [Premiers pas avec les thèmes](/docs/cms/start-building/building-blocks/themes/getting-started) * [Comment ajouter des fonctionnalités de thème à des sites existants ?](/docs/cms/best-practices/improve-existing-sites/add-theme-features-to-existing-sites) * [Thème boilerplate HubSpot](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate) # Sections Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/sections/sections Les sections sont l'élément enfant le plus à l'extérieur de dnd_area. Les sections peuvent être réutilisées grâce à des modèles de section ou en les enregistrant dans l'éditeur de pages. Le conteneur le plus à l'extérieur d'une [zone glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) est appelé section. Les sections ne peuvent être imbriquées dans aucun autre [élément dnd](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#drag-and-drop-areas-and-their-elements), mais peuvent contenir des modules, des [lignes](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#row) et des [colonnes.](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#column) Dans l'éditeur de page, les créateurs de contenu peuvent ajouter des sections à la page, puis les modifier et les styliser selon leurs besoins. Les créateurs de contenu peuvent également créer et enregistrer des sections à utiliser sur d'autres pages du même thème, ce qui rend la création de contenu plus efficace. Dans cet article, vous en apprendrez davantage sur les sections et sur la manière de les utiliser dans l'éditeur de pages. Lors du développement d'un thème, vous pouvez consulter le guide afin de [masquer les modules et les sections](/docs/cms/start-building/building-blocks/modules/hide-modules-and-sections) de l'éditeur de page pour créer une expérience de création de contenu plus rationalisée. ![page editor add reusable section UI](https://www.hubspot.fr/hubfs/page%20editor%20add%20reusable%20section%20UI.gif) ## Présentation Les sections peuvent être créées [dans l'éditeur de contenu par un créateur de contenu](https://knowledge.hubspot.com/fr/website-pages/edit-page-content-in-a-drag-and-drop-area#create-a-section) ou intégrées par un développeur dans [`dnd_area`](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) avec la balise [`dnd_section`](/docs/cms/reference/hubl/tags/dnd-areas#drag-and-drop-section-code-dnd-section-code-). Les options de style disponibles dans l'éditeur sont également disponibles lors du codage d'un modèle. Par exemple : ```hubl theme={null}
{% dnd_area 'dnd_area' label='Main section', %} {% dnd_section background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': 'https://example.com/path/to/image.jpg' }, margin={ 'top': 32, 'bottom': 32 }, padding={ 'top': '1em', 'bottom': '1em', 'left': '1em', 'right': '1em' }, max_width=1200, vertical_alignment='MIDDLE' %} {% end_dnd_section %} {% end_dnd_area %}
``` Pour obtenir une documentation complète sur tous les paramètres des éléments de glisser-déposer disponibles et des exemples d'utilisation, consultez les [balises dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas). Vous pouvez utiliser les sections pour élaborer rapidement des modèles faciles à lire. Étant donné que vous ne spécifiez que le contexte dans lequel les instances spécifiques du modèle sont différentes, vous pouvez toujours revenir en arrière et modifier ce modèle de section. > [!WARNING] > > **Remarque :** la modification d'une section entraînera sa mise à jour dans toutes les instances de cette section, à l'exception des pages existantes qui utilisent un modèle faisant référence à la section. Les pages créées précédemment avec un modèle contenant une section incluse devront être mises à jour manuellement pour utiliser la nouvelle version de la section. Cela permet d'éviter d'apporter accidentellement des modifications radicales. Pour mettre à jour une section, un créateur de contenu peut se rendre dans l'éditeur de page, ajouter la nouvelle section à la page, puis supprimer l'ancienne version. ## Créer des sections réutilisables Dans un thème, vous pouvez inclure des sections préconfigurées que les créateurs de contenu peuvent ajouter aux pages utilisant ce thème dans l'éditeur de pages. Ces sections réutilisables sont construites comme des fichiers modèles de section et sont codées avec la même syntaxe que celle que vous utiliseriez à l'intérieur de `dnd_area`. > [!WARNING] > > **Remarque :** pour rendre une section disponible pour plusieurs thèmes, vous devrez ajouter le fichier modèle de la section à chaque thème. De même, les sections créées par les créateurs de contenu dans l'éditeur de contenu ne seront disponibles que dans ce thème. Ci-dessous, vous apprendrez à créer des fichiers modèles de section et à les référencer dans d'autres fichiers modèles. ### Fichiers de modèles de section Les modèles de section sont désignés par `templateType: section` dans leur [annotation de modèle](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#template-annotations). ```html theme={null} ``` | Paramètre | Type | Description | Valeur | | - | - | - | - | | `templateType` | Chaîne | Définit le type de modèle utilisé pour déterminer où le modèle peut être utilisé et quelles données sont disponibles. | `section` | | `label` | Chaîne | Utilisée dans l'éditeur de pages pour fournir un nom compréhensible pour la section. | | | `description` | Chaîne | Description supplémentaire de la section au-delà de ce que vous pouvez faire avec un libellé. S'affiche dans l'éditeur de page. 255 caractères maximum. | | | `screenshotPath` | Chaîne/chemin | Chemin d'accès à une capture d'écran de la section. Utilisé pour donner aux créateurs de contenu une référence visuelle simple de l'aspect de la section. | | Un modèle de section doit commencer et se terminer par une balise `dnd_section`. Il ne peut y avoir qu'un seul `dnd_section` dans un modèle de section. À l'intérieur de cette section, vous pouvez placer des modules, des lignes et des colonnes, en suivant les mêmes règles `dnd_area` que celles qui s'appliquent à l'[ajout d'un dnd\_area à un modèle de page](/docs/cms/reference/hubl/tags/dnd-areas#dnd-area). L'exception est que vous définissez le contenu d'une seule section et de ses éléments de glisser-déposer. ```hubl theme={null} {% dnd_section padding={ 'top': 200, 'right': 20, 'bottom': 200, 'left': 20 }, background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': context.backgroundImage || get_asset_url('../images/blank-page-banner.png') }, max_width=778, vertical_alignment='MIDDLE' %} {% dnd_column %} {% dnd_row %} {% dnd_module path='@hubspot/rich_text' %} {% module_attribute 'html' %}
{{ context.content || '

Communicate Your Way

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus dapibus posuere mi, in pretium ante posuere a. Aliquam a risus at eros molestie pretium.

' }}
{% end_module_attribute %} {% end_dnd_module %} {% end_dnd_row %} {% dnd_row %} {% dnd_module path='../modules/button', button_text={{ context.buttonText || 'Subscribe' }} horizontal_alignment='CENTER' %} {% end_dnd_module %} {% end_dnd_row %} {% end_dnd_column %} {% end_dnd_section %} ``` ### Ajouter une section partielle à un modèle Après avoir créé une section, vous pouvez y faire référence dans un `dnd_area` en utilisant une balise `include_dnd_partial`. Cette balise fournit le chemin d'accès au fichier de la section, comme indiqué ci-dessous : ```hubl theme={null} {% dnd_area 'dnd_area' class='body-container body-container--home-page', label='Main section' %} {# Banner Section #} {% include_dnd_partial path='../sections/banner.html' context={} %} {# End Banner Section #} {% end_dnd_area %} ``` > [!NOTE] > > Dans l'exemple ci-dessus, notez l'argument contextuel dans la balise `include_dnd_partial` . Cela vous permet de transférer des variables spécifiques du modèle de page à la section, en remplaçant les valeurs par défaut dans le fichier de la section. [Voir la section contexte](#section-context) pour plus d'informations. ### Contenu de la section Vous pouvez utiliser des variables de contexte de section pour remplacer les valeurs par défaut au niveau de la section et du module. Les variables de contexte de section sont définies par vous et ne sont pas associées directement aux modules et à leurs champs. Dans votre balise de page, vous pouvez définir ces variables de contexte grâce au paramètre `context` de la balise `include_dnd_partial`. ```hubl theme={null} {% dnd_area 'dnd_area' class='body-container body-container--home-page', label='Main section' %} {# Banner Section #} {% include_dnd_partial path='../sections/banner.html' context={ 'content': '

Home Page

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus dapibus posuere mi, in pretium ante posuere a. Aliquam a risus at eros molestie pretium.

', 'buttonText': 'Buy Now' } %} {# End Banner Section #} {% end_dnd_area %} ``` Toutes les variables que vous ajoutez à votre paramètre `context` seront disponibles pour être référencées dans votre modèle de section. L'exemple suivant montre comment définir l'URL de l'image et le contenu de la zone de texte riche et du bouton défini en contexte, le cas échéant. ```hubl theme={null} {% dnd_section background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': context.backgroundImage || get_asset_url('../images/blank-page-banner.png') }, max_width=778 %} {% dnd_column %} {% dnd_row %} {% dnd_module path='@hubspot/rich_text' %} {% module_attribute 'html' %}
{{ context.content || '

Communicate Your Way

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus dapibus posuere mi, in pretium ante posuere a. Aliquam a risus at eros molestie pretium.

' }}
{% end_module_attribute %} {% end_dnd_module %} {% end_dnd_row %} {% dnd_row %} {% dnd_module path='../modules/button', button_text={{ context.buttonText || 'Subscribe' }} horizontal_alignment='CENTER' %} {% end_dnd_module %} {% end_dnd_row %} {% end_dnd_column %} {% end_dnd_section %} ``` > [!NOTE] > > Notez que lorsque des variables de contexte sont utilisées, il existe un filtre `||` *OR* pour fournir un contenu par défaut si aucun contenu n'est fourni. Par exemple, dans le module bouton, si `context.buttonText` a une valeur, la page l'utilisera. Dans le cas contraire, le texte est défini sur `Subscribe`. ### Classes de section Dans les modèles de section, vous pouvez ajouter des classes au wrapper de la section à l'aide du paramètre class. Cela ajoutera la classe que vous avez spécifiée au champ de classe de l'élément html de la section dnd. Il est recommandé, dans la mesure du possible, d'utiliser des contrôles de style intégrés aux sections pour permettre aux créateurs de contenu de les modifier. > [!WARNING] > > **Remarque :** les classes de section ne sont prises en charge que dans les modèles de section. ```hubl theme={null} {% dnd_section class='my-hero-section' padding={ 'top': 200, 'right': 20, 'bottom': 200, 'left': 20 }, background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': context.backgroundImage || get_asset_url('../images/blank-page-banner.png') }, max_width=778, vertical_alignment='MIDDLE' %} ... ``` > [!WARNING] > > Les créateurs de contenu ne peuvent pas modifier, ajouter ou supprimer des classes. Elles ne peuvent être supprimées qu'en recréant une section manuellement dans l'éditeur. > > En outre, vous devez éviter de modifier la disposition des enfants de la section à l'aide de CSS ou de JavaScript. Cela peut créer une expérience d'édition de page désagréable pour le créateur de contenu. ### Prévisualiser votre section La manière la plus simple de prévisualiser votre section pendant le développement est d'utiliser le gestionnaire de conception. Ouvrez un modèle contenant un [`dnd_area`](/docs/cms/reference/hubl/tags/dnd-areas) qui appelle votre modèle de section à l'aide d'une balise `include_dnd_partial`. Dans l'angle supérieur droit, cliquez sur aperçu. Vous pouvez ainsi continuer à mettre à jour votre section et voir vos changements reflétés immédiatement. Vous n'avez pas à créer une nouvelle page pour chaque modification apportée. ## Copie de section HubL Dans l'éditeur de page, vous pouvez copier le balisage HubL d'une section par glisser-déposer afin de réutiliser le code si nécessaire. Cela peut s'avérer utile lorsque l'on souhaite recréer des sections de glisser-déposer dans un fichier codé. Pour copier le balisage HubL d'une section : * Accédez à votre contenu : * **Pages de site web** : dans votre compte HubSpot, naviguez vers **Contenu** > **Pages de site web**. * **Pages de destination** : dans votre compte HubSpot, accédez à **Contenu** > **Pages de destination**. * Cliquez sur une page pour la modifier. * Dans l'éditeur de page, ajoutez le paramètre suivant à l'URL, puis appuyez sur **Entrée** : `?developerMode=true` * Une fois la page rechargée, vous serez maintenant en mode développeur. Vous pouvez quitter le mode développeur à tout moment en cliquant sur **Quitter le mode développeur** dans l'angle supérieur droit. ![exit-developer-mode0](https://www.hubspot.fr/hubfs/exit-developer-mode0.png) * Placez le curseur sur la section que vous souhaitez copier, puis cliquez sur l'icône de la **flèche vers le bas**. Sélectionner **Copier en tant que HubL**. Le balisage HubL sera alors copié dans votre presse-papiers. ![copy-section-hubl-menu](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/copy-section-hubl-menu.png) ## Ressources associées * [Présentation des zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) * [Balises HubL de la zone de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas) * [Utilisation de modules dans les modèles](/docs/cms/reference/modules/using-modules-in-templates) * [Démarrer avec les zones de glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial) * [Comment activer le mode développeur dans l'éditeur de pages de CMS Hub - YouTube](https://www.youtube.com) # Modèles de blogs Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/blog Les modèles de listing de blog et d'article de blog peuvent être utilisés pour personnaliser l'apparence du blog d'un site. > **Produits pris en charge** Les blogs HubSpot sont constitués de pages de listing de blog et des articles de blog individuels. En plus de répertorier les articles de blog individuels, le modèle de listing de blog est également utilisé pour restituer les pages de listing d'auteur et de balise. Vous pouvez créer un modèle unique pour restituer toutes les pages de listing et d'article de blog ou créer deux modèles distincts. Découvrez ci-dessous le balisage des modèles de blog, les composants des modèles et les options de personnalisation. ## Créer un modèle commun pour les pages de listing et d'articles Pour créer un modèle qui restitue les pages de listing et d'article, ajoutez l'[annotation](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#template-annotations) `templateType: blog` en haut de votre fichier de modèle. Si vous utilisez un modèle pour restituer les deux, vous utiliserez une [fonction if](/docs/cms/reference/hubl/if-statements) qui détermine si l'utilisateur consulte une page de listing ou un article individuel. Si vous utilisez les [mises en page du gestionnaire de conception en glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/drag-and-drop-templates), cette fonction `if` est intégrée à l'interface utilisateur des boutons de module de contenu du blog. En utilisant l'instruction `if is_listing_view`, vous pouvez écrire séparément le code de l'article et celui de la liste. ```hubl theme={null} {% if is_listing_view %} Markup for blog listing template {% else %} Markup for blog post template {% endif %} ``` ## Créer des modèles de listing et d'articles distincts Vous pouvez également choisir d'avoir des modèles distincts pour les [articles de blog](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#blog-post) et les [pages de listing](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#blog-listing), ce qui peut contribuer à rendre votre code plus propre et plus facile à lire en tant que développeur, tout en rendant les modèles plus faciles à sélectionner pour les créateurs de contenu. Plutôt que d'utiliser l'annotation `templateType: blog` en haut d'un modèle, incluez les [annotations](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#template-types) suivantes en haut de vos deux modèles : * **Modèle d'article de blog :** `templateType: blog_post` * **Modèle de liste de blog :** `templateType: blog_listing` ![template-annotation-blog-listing](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/template-annotation-blog-listing.png) Lors de la création de modèles distincts pour les articles et les listes, la vérification `is_listing_view` n'est pas nécessaire. Au lieu de cela, vous devez [sélectionner manuellement des modèles distincts](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates) dans les paramètres de blog du compte. Vous pouvez également [migrer un modèle de blog unifié existant pour en faire un modèle d'article de blog ou un modèle de liste de blogs](https://developers.hubspot.fr/docs). ### Modèles de pages de listing L'annotation `templateType: blog_listing` rend le modèle disponible pour la [sélection dans les paramètres du blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings), spécifiquement pour la vue de la liste. Avec ce type de modèle, les créateurs de contenu peuvent également modifier la page d'inscription dans l'éditeur de pages. En incluant également des [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) dans le modèle, les modules peuvent être ajoutés et supprimés dans l'éditeur en glisser-déposer, comme c'est le cas pour les autres pages du CMS. Consultez les [modèles de blog CMS boilerplate](https://github.com/HubSpot/cms-theme-boilerplate/pull/349) pour voir des exemples d'inclusion de zones de glisser-déposer. La liste des articles est générée par une [boucle for](/docs/cms/reference/hubl/loops) qui parcourt les articles de votre blog. `contents` est une séquence prédéfinie de contenu qui contient tous les articles de ce blog. ```hubl theme={null} {% for content in contents %}
Post item markup that renders with each iteration.
{% endfor %} ``` > [!NOTE] > > Il est recommandé de faire en sorte que toutes les chaînes de texte de votre modèle de liste de blogs soient contrôlées par des champs. Cela facilite la création de blogs [multilingues](/docs/cms/start-building/features/multi-language-content) et donne plus de contrôle aux créateurs de contenu. ## Créer un module de liste de blogs Vous pouvez permettre aux créateurs de contenu de placer des modules sur le périmètre du contenu de la liste de blogs, par exemple sur les côtés, ou au-dessus et en dessous. Pour ce faire, il est recommandé de créer un module de liste de blogs qui utilise une [boucle for liste de blogs.](/docs/cms/start-building/building-blocks/templates/blog#blog-listing-for-loop) À titre d'exemple, consultez le [module de liste de blog CMS boilerplate](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/modules/blog-listings.module). [](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/modules/blog-listings.module) Bien que HubSpot fournisse des [paramètres de blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates) pour l'affichage de résumés et l'utilisation d'images en vignette, vous pouvez également intégrer ces fonctionnalités dans votre module. Cela permet aux créateurs de contenu de définir ces fonctionnalités dans l'éditeur de page, plutôt que dans les paramètres du blog. ## Pages d'auteur de blog, de balise et de liste simple En plus des pages d'articles de blog et de listes de blogs, les blogs HubSpot ont également des pages pour les auteurs de blogs, les balises d'articles de blog et des pages de listes simples. Ces pages supplémentaires utilisent le même modèle que la page de listing du blog pour restituer leur contenu. > [!NOTE] > > Comme le modèle de page de liste est également partagé par la page d'auteur du blog, de balise et d'annonce simple, les mises à jour publiées sur le modèle s'appliqueront également à ces pages. Pour configurer individuellement la mise en page de ces pages, vous pouvez utiliser les instructions `if` pour restituer le contenu de chaque type de page de manière conditionnelle. ### Fonction if blog\_author Dans le balisage standard de listing de blog de HubSpot, il existe une instruction conditionnelle `if blog_author`. Cette affirmation est considérée comme vraie lorsque l'on consulte la page d'un auteur, qui répertorie les articles publiés par l'auteur. Le modèle de boilerplate comprend le nom de l'auteur, sa biographie et ses comptes de réseaux sociaux. ```hubl theme={null} {% if blog_author %}
{% if blog_author.avatar %}
{% endif %}

{{ blog_author.display_name }}

{{ blog_author.bio }}

{% if blog_author.has_social_profiles %} {% endif %}
{% else %} ``` ### Fonction if tag Vous pouvez utiliser une instruction `if tag` pour ne restituer le code que sur une page de liste de sujets de blog, que les visiteurs peuvent voir lorsqu'ils cliquent sur un sujet de blog sur votre site. L'exemple ci-dessous est un bloc de texte prédéfini qui utilise la variable de titre de page pour imprimer automatiquement le nom de la balise en haut d'une page de listing de balise. ```hubl theme={null} {% if tag %}

Posts about {{ page_meta.html_title|split(" | ")|last }}

{% endif %} ``` ### Fonction if not simple\_list\_page Il existe deux types de pages de liste de blogs qui peuvent être restituées pour afficher les articles de blogs : la page de liste ordinaire et la page de liste simple. * La liste ordinaire parcourt le nombre d'articles spécifié par le paramètre de blog de listing d'article et pagine en conséquence. * Une liste simple est une liste de tous vos articles et ne prend pas en charge la pagination. La liste simple n'est pas affectée par le [paramètre de limite d'articles de blog](/docs/cms/start-building/introduction/developer-environment/website-settings#number-of-posts-per-listing-page) et contient généralement les liens vers les 200 articles de blog les plus récents. L'adresse de votre page de listing simple est l'URL de votre blog avec `/all` ajouté à la fin du chemin. Vous pouvez utiliser une instruction `if not simple_list_page` pour déterminer ce qui doit être restitué dans une liste simple par rapport à une liste ordinaire. Une version simplifiée de cette instruction est présentée ci-dessous. > [!NOTE] > > Notez que l'instruction `if` utilise la logique inverse, ce qui signifie que l'instruction `else` définit la vue en liste simple. Vous pouvez éventuellement utiliser une [fonction unless](/docs/cms/reference/hubl/if-statements#unless-statements) à la place. ```hubl theme={null} {% if not simple_list_page %} Iterated post markup for regular listing {% else %}

{{ content.name }}

{% endif %} ``` ## Pagination de listing Les pages de listing de blog ont une pagination générée automatiquement. Votre modèle de listing peut inclure une logique permettant aux visiteurs de consulter facilement les articles de votre blog. Le [blog de boilerplate](https://boilerplate.hubspotcms.com/blog) permet une pagination simple et numérique grâce au [balisage suivant](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/modules/blog-pagination.module/module.html) : ```hubl theme={null} {% if contents.total_page_count > 1 %}
{% set page_list = [-2, -1, 0, 1, 2] %} {% if contents.total_page_count - current_page_num == 1 %}{% set offset = -1 %} {% elif contents.total_page_count - current_page_num == 0 %}{% set offset = -2 %} {% elif current_page_num == 2 %}{% set offset = 1 %} {% elif current_page_num == 1 %}{% set offset = 2 %} {% else %}{% set offset = 0 %}{% endif %} {% icon name="chevron-left" style="SOLID", width="13", no_wrapper=True %} Prev {% for page in page_list %} {% set this_page = current_page_num + page + offset %} {% if this_page > 0 and this_page <= contents.total_page_count %} {{ this_page }} {% endif %} {% endfor %} Next {% icon name="chevron-right" style="SOLID", width="13", no_wrapper=True %}
{% endif %} ``` ## Balisage boilerplate Ci-dessous, vous trouverez le balisage boilerplate des modèles d'article de blog et de page de liste de blogs. Vous pouvez également consulter ce balisage dans le boilerplate du CMS sur GitHub, comme indiqué dans chaque section. ### Balisage des modèles d'article Tous les articles d'un blog sont générés par un seul modèle de blog. `Content` est un objet de données prédéfini qui contient des informations sur l'article de blog demandé. Les [articles de boilerplate](https://boilerplate.hubspotcms.com/blog) sont restitués avec le [balisage suivant](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/blog-post.html) : ```hubl theme={null}

{{ content.name }}

{{ content.post_body }}
{% if content.tag_list %} {% endif %}
{% module "blog_comments" path="@hubspot/blog_comments", label="Blog Comments" %}
``` Les informations sur l'auteur de l'article de blog sont également disponibles dans les données `content`. ```hubl theme={null} {{ content.blog_post_author.display_name }}

Written by {{ content.blog_post_author.display_name }}

{{ content.blog_post_author.bio }}

{% if content.blog_post_author.has_social_profiles %}
{% endif %} ``` ### Balisage des modèles de listing Le contenu de la [page de listing de blog du boilerplate](https://boilerplate.hubspotcms.com/blog) pour la boucle for est restitué avec le [balisage suivant](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/blog-index.html) : ```hubl theme={null} {% for content in contents %} {# On the blog homepage the first post will be featured above older posts #} {% if (loop.first && current_page_num == 1 && !topic) %}

{{ content.name }}

{{ content.post_list_content }}
{% else %}

{{ content.name }}

{{ content.post_list_content|truncatehtml(100) }}
{% endif %} {% endfor %} ``` ## Ressources associées * [Variables de blog](/docs/cms/reference/hubl/variables#blog-variables) * [Modèles de blogs](/docs/cms/start-building/building-blocks/templates/blog) * [Thème boilerplate HubSpot](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate) * [Comment créer un blog](https://knowledge.hubspot.com/fr/blog/create-a-new-blog) * [Importer votre blog dans HubSpot](https://knowledge.hubspot.com/fr/blog/import-your-content-into-hubspot) # Balisage des modèles d'e-mails Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/email-template-markup L'article suivant porte sur la façon dont les modèles d'e-mails standard de HubSpot sont codés. Les clients de messagerie ne prennent en charge que certaines fonctionnalités HTML et CSS. Par conséquent, le codage de modèles d'e-mails dont le rendu est cohérent d'un client à l'autre requiert une bonne dose d'expérience et de patience. Pour vous faciliter la vie, les modèles d'e-mails HubSpot peuvent être créés sous forme de modèles conviviaux ou de fichiers codés. > **Produits pris en charge** Dans cet article, découvrez comment sont codés les modèles d'e-mails standard de HubSpot. Lorsque vous créez des modèles d'e-mails personnalisés, n'oubliez pas que les clients d'e-mail ne prennent en charge que [certaines fonctions HTML et CSS](http://www.campaignmonitor.com/css/). C'est pourquoi le codage de modèles d'e-mails dont le rendu est cohérent d'un client à l'autre requiert une bonne dose d'expérience et de patience. Consultez la base de connaissances de HubSpot pour savoir comment [créer des mises en page de modèles dans l'application](https://knowledge.hubspot.com/fr/design-manager/create-page-email-and-blog-templates-in-the-layout-editor) ou comment [enregistrer un e-mail existant en tant que modèle](https://knowledge.hubspot.com/fr/marketing-email/save-your-marketing-email-as-a-template). ## Variables de modèle d'e-mail obligatoires Afin d'envoyer des e-mails avec HubSpot, vos modèles doivent inclure certaines informations. Consultez les [variables HubL d'e-mail obligatoires](/docs/cms/reference/hubl/variables#required-email-template-variables). Lorsque vous travaillez avec des modèles codés, vous souhaiterez également utiliser des [modules](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview) pour vous assurer que le contenu de chaque e-mail peut être facilement modifié. ## hs-inline-css et data-hse-inline-css L'une des difficultés du codage de modèles d'e-mails, quel que soit le client, est [le manque de prise en charge des CSS](http://www.campaignmonitor.com/css/) dans un élément ` {# coded OR drag-and-drop email templates: #}
Column 1 Column 2
``` ```text résultat.txt theme={null}
Column 1 Column 2
``` ## Modèle d'e-mail adaptable La mise en page par défaut du modèle d'e-mail de HubSpot utilise le balisage ci-dessous. Ces mises en page adaptatives comprennent des requêtes média qui rendent les images et les tableaux adaptatifs. Les mises en page adaptables utilisent des [variables de couleur et de police](/docs/cms/reference/hubl/variables#color-and-font-settings) associées à **Paramètres > Marketing > E-mail**. > [!WARNING] > > Lorsque vous travaillez avec la mise en page adaptative de HubSpot, tout élément `` dont la classe comprend le texte « colonne » sera rendu adaptatif. ```hubl theme={null} {% if content.html_title and content.html_title != "" %}{{ content.html_title }}{% else %}{{ content.body.subject }}{% endif %} {% if content.meta_description %}{% endif %}
{% text "preview_text" label="Preview Text This will be used as the preview text that displays in some email clients", value="", no_wrapper=True %}
{% if content.create_page %}
Not rendering correctly? View this email as a web page here.
{% endif %}
{% content_attribute "email_body" %}

Hi {{ contact.firstname }},

Describe what you have to offer the customer. Why should they read? What did you promise them in the subject line? Tell them something cool. Make them laugh. Make them cry. Well, maybe don't do that...

Use a list to:

  • Explain the value of your offer
  • Remind the reader what they’ll get out of taking action
  • Show off your skill with bullet points
  • Make your content easy to scan

LINK TO A LANDING PAGE ON YOUR SITE (This is the really important part.)

Now wrap it all up with a pithy little reminder of how much you love them.

Aw. You silver-tongued devil, you.

Sincerely,

Your name

{% end_content_attribute %}
{% text "social_sharing_label" label='Social Sharing Label' %}
{% widget_block social_sharing "Social Sharing" label="Social Sharing", use_page_url=False %} {% end_widget_block %}
{% hubspot_footer %}
``` ## Modèle d'e-mail statique Les modèles statiques de HubSpot utilisent un balisage différent et n'incluent pas les requêtes média qui rendent l'e-mail adaptatif. Les mises en page statiques utilisent également des [variables de couleur et de police](/docs/cms/reference/hubl/variables#color-and-font-settings) associées à **Paramètres > Marketing > E-mail**. ```hubl theme={null} {% if content.html_title and content.html_title != "" %}{{ content.html_title }}{% else %}{{ content.body.subject }}{% endif %} {% if content.meta_description %}{% endif %}
{% text "preview_text" label="Preview Text This will be used as the preview text that displays in some email clients", value="", no_wrapper=True %}
{% if content.create_page %}
Not rendering correctly? View this email as a web page here.
{% endif %}
{% content_attribute "email_body" %}

Hi {{ contact.firstname }},

Describe what you have to offer the customer. Why should they read? What did you promise them in the subject line? Tell them something cool. Make them laugh. Make them cry. Well, maybe don't do that...

Use a list to:

  • Explain the value of your offer
  • Remind the reader what they’ll get out of taking action
  • Show off your skill with bullet points
  • Make your content easy to scan

LINK TO A LANDING PAGE ON YOUR SITE (This is the really important part.)

Now wrap it all up with a pithy little reminder of how much you love them.

Aw. You silver-tongued devil, you.

Sincerely,

Your name

{% end_content_attribute %}
{% text "social_sharing_label" overrideable=True, label="Social Sharing Label" %}
{% widget_block social_sharing "Social Sharing" label='Social Sharing', overrideable=True, use_page_url=False %} {% end_widget_block %}
{% hubspot_footer %}
``` ## Partir de zéro Lorsque vous créez un e-mail .html à partir de zéro dans le gestionnaire de conception, HubSpot génère automatiquement le balisage ci-dessous. ```hubl theme={null} {% if content.html_title and content.html_title != '' %}{{ content.html_title }}{% else %}{{ content.body.subject }}{% endif %} {% if content.meta_description %}{% endif %}
{% text "preview_text" label="Preview Text This will be used as the preview text that displays in some email clients", value="", no_wrapper=True %}
{% if content.create_page %}
Not rendering correctly? View this email as a web page here.
{% endif %} ``` # Modèles HTML et HubL Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/html-hubl-templates Les modèles du CMS Hub sont écrits en HTML et en HubL. Ces modèles sont capables de contenir des régions que les créateurs de contenu peuvent facilement modifier eux-mêmes. Les modèles HTML et HubL peuvent être utilisés pour [chaque type de modèle](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#template-types) sur le CMS Hub. Ces modèles sont des fichiers .html qui prennent en charge le [langage de modélisation HubL](/docs/cms/reference/hubl/operators-and-expression-tests). Comme ces modèles codés prennent en charge HubL, la meilleure expérience de prévisualisation consiste à utiliser [l'aperçu du modèle dans le gestionnaire de conception ](https://knowledge.hubspot.com/fr/website-pages/understand-a-hubspot-template-setup)ou à visualiser les pages sur un compte sandbox. Les modèles HTML et HubL peuvent contenir des partiels[](#partials), qui peuvent être utilisés pour séparer des morceaux de code couramment utilisés, tels qu'un en-tête ou un pied de page. Les modèles HTML et HubL donnent un plus grand contrôle aux développeurs que les [modèles de type glisser-déposer du gestionnaire de conception visuelle](/docs/cms/start-building/building-blocks/drag-and-drop/drag-and-drop-templates). À leur tour, les développeurs peuvent offrir de meilleures expériences aux créateurs de contenu grâce à [la fonctionnalité de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas), ce qui n'est possible qu'avec les modèles HTML et HubL. ![image1-2](https://cdn2.hubspot.net/hubfs/53/image1-2.png) > [!NOTE] > > Le modèle ci-dessus est le [modèle base.html](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/layouts/base.html) inclus dans le [boilerplate du CMS HubSpot](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate), qui permet de bien démarrer dans le développement avec HubSpot. ## Familiarité et outils Étant donné que les modèles HTML et HubL sont des fichiers codés, vous pouvez utiliser vos outils préférés pour les modifier localement. Il est recommandé d'utiliser les [outils de développement local](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli) de HubSpot afin que vous puissiez [charger](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#upload), [récupérer](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#fetch), [consulter](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#watch), [créer](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#create) ou gérer de manière sécurisée des fichiers dans le système de fichiers du développeur ainsi que dans le gestionnaire de fichiers. La création de modèles HTML et HubL avec HubSpot est similaire à l'utilisation d'un autre langage de modélisation que vous avez peut-être utilisé auparavant. La principale différence réside dans le fait que HubSpot adopte une position bien arrêtée sur les meilleures façons de faire certaines choses afin d'offrir la meilleure expérience possible aux créateurs de contenu et de décharger le développeur d'une grande partie du travail de maintenance et d'optimisation des performances. Par exemple, si vous souhaitez charger un fichier CSS sur une page pour certains modules, au lieu d'utiliser ``, vous devez inclure la feuille de style via `css_assets` dans le [fichier meta.json du module](/docs/cms/reference/modules/configuration#adding-css-and-javascript-dependencies). Cela permet à HubSpot de charger de façon conditionnelle la CSS uniquement lorsque le module est présent sur une page, minimisant ainsi la quantité de CSS inutiles chargées. Découvrez-en davantage sur [l'optimisation de votre workflow de développement HubSpot](/docs/cms/start-building/introduction/developer-environment/creating-an-efficient-development-workflow). ## Annotations de modèles Les annotations de modèles, incluses en haut d'un modèle, configurent des paramètres de modèle importants, tels que le type de modèle et s'il peut être utilisé pour créer un nouveau contenu. Les annotations de modèles peuvent être modifiées à tout moment au cours du processus de développement. Découvrez-en davantage sur les annotations de modèles disponibles ci-dessous. ```html theme={null} ... ``` | Annotation | Type | Description | | - | - | - | | `templateType` | Chaîne | Permet d'indiquer le type de modèle d'un fichier. Les valeurs sont les suivantes :
  • Modèles standards :
    • [page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#page)
    • [e-mail](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#email)
    • [blog\_listing](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#blog-listing)
    • [blog\_post](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#blog-post)
    • [blog](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#blog)
  • Partiels : [global\_partial](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#global-partials)
  • Modèles système :
    • [error\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#error-pages)
    • [password\_prompt\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#password-prompt)
    • [membership\_login\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#membership-login)
    • [membership\_register\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#membership-register)
    • [membership\_reset\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#membership-password-reset)
    • [membership\_reset\_request\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#membership-reset-request)
    • [email\_subscription\_preferences\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#email-subscription-preferences)
    • [email\_backup\_unsubscribe\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#email-backup-unsubscribe)
    • [email\_subscriptions\_confirmation\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#email-subscription-unsubscribe-confirmation)
    • [search\_results\_page](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#search-results-page)
| | `isAvailableForNewContent` | Chaîne | Permet d'indiquer si un modèle est disponible à la sélection dans le processus de création de contenu. Les valeurs sont : `true`, `false`. Les modèles définis sur la valeur `false` n’ont pas besoin d’inclure les [variables requises](/docs/cms/reference/hubl/variables#required-page-template-variables). Les modèles de type `page` qui sont définis sur la valeur false peuvent également être utilisés comme [partiel standard](#partials). | | `enableDomainStylesheets` | Chaîne | Permet d'indiquer si le modèle doit charger les [feuilles de style de domaine](https://knowledge.hubspot.com/fr/design-manager/create-edit-and-attach-css-files-to-style-your-site#attach-or-remove-stylesheets-on-a-domain-level). Les valeurs comprennent : `true`, `false`. | | `Label` | Chaîne | La description conviviale du modèle, affichée dans l'écran de sélection du modèle. Par exemple : `About Page`, `Homepage`, `Pricing`. | | `screenshotPath` | Chaîne | La capture d'écran à afficher lorsqu'un créateur de contenu sélectionne un modèle. Cette capture d'écran devrait permettre de différencier facilement vos modèles. | ## En-tête et pied de page inclus Les modèles de HubSpot exigent la présence de deux balises, sauf si le fichier est un partiel de modèle. Les deux balises sont : * `{{ standard_header_includes }}` - Permet d’ajouter intelligemment la CSS requise combinée et minifiée. * `{{ standard_footer_includes }}` - Permet d’ajouter intelligemment du JavaScript au bas d’une page de façon dynamique, pour le script de suivi HubSpot et les modules par exemple. Ces balises doivent être présentes dans un modèle ou ses enfants [partiels](#partials) pour être publiés et utilisés. ## Partiels Les partiels de modèles sont des fichiers HTML et HubL qui peuvent être inclus dans d'autres fichiers codés. Les partiels vous permettent d'adopter une approche plus modulaire en partageant le même balisage pour plusieurs modèles. Par exemple, un en-tête peut être rendu en tant que partiel afin que vous puissiez facilement l'inclure comme composant sans avoir à le coder à nouveau. ### Partiels standards Un partiel standard est un modèle ou un composant réutilisable contenant du contenu qui peut être modifié sur des pages individuelles. Cela permet aux créateurs de contenu de modifier le contenu au besoin, par opposition aux partiels globaux qui partagent toujours le même contenu. Par exemple, le code suivant extrairait le module de barre latérale dans un autre fichier de modèle. Les partiels standards doivent inclure les [annotations](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#template-annotations) suivantes en haut du fichier de modèle : * `templateType: page` * `isAvailableForNewContent: false` ```hubl theme={null} {% include "../partial/sidebar.html" %} ``` ### Partiels globaux Un partiel global est un type de [contenu global](/docs/cms/start-building/building-blocks/global-content#global-partials) qui peut être utilisé sur plusieurs modèles avec du contenu qui est partagé sur toutes les instances du partiel. Les partiels globaux sont souvent utilisés pour les en-têtes et les pieds de page, dont vous pouvez voir un exemple dans l'[en-tête](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/partials/header.html) et le [pied de page](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/partials/footer.html) du boilerplate de CMS Hub. Ces partiels sont ensuite appelés dans [base.html](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/layouts/base.html) à l’aide de la balise `global_partial`. Les partiels globaux doivent inclure l'[annotation](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#template-annotations) `templateType: global_partial` en haut du fichier. ```hubl theme={null} {% global_partial path="../partials/header.html" %} ``` ### Blocs et extensions Lors de la création de modèles complexes, vous pouvez créer des blocs compartimentés qui étendent un modèle parent. Par exemple, vous pouvez créer un modèle parent qui inclut les variables [`standard_header_includes`](/docs/cms/reference/hubl/variables#required-page-template-variables) et [`standard_footer_includes`](/docs/cms/reference/hubl/variables#required-page-template-variables) requises. Dans ce modèle, vous définissez un bloc unique à l’aide de la syntaxe suivante où `body` est un nom unique : ```hubl theme={null} {% block body %} {% endblock body %} ``` Ensuite, dans le modèle enfant, vous pouvez étendre le modèle parent, puis insérer plus de contenu dans le bloc `body`. ```hubl theme={null} {% extends "./layouts/base.html" %} {% block body %}

Page Content

  • Bullet 1
  • Bullet 2
  • Bullet 3
{% endblock %} ``` Cette méthode est utilisée dans le modèle [base.html](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/layouts/base.html) du boilerplate de CMS Hub, qui est ensuite étendu par les autres modèles dans le [dossier de modèles](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/templates). ### Groupes globaux Les [groupes globaux](https://knowledge.hubspot.com/fr/design-manager/use-global-content-across-multiple-templates) créés à l'aide du générateur de modèles par glisser-déposer dans le gestionnaire de conception peuvent également être inclus. La syntaxe est affichée ci-dessous : ```hubl theme={null} {% include "/path/to/global_header.template.json" %} ``` # Legacy quote templates Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/legacy-quotes # Vue d'ensemble des modèles Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/overview Les modèles sont des encadreurs de pages ou d'e-mails réutilisables qui placent généralement des modules et des partials dans une mise en page. Les créateurs de contenu sélectionnent un modèle à utiliser avant de créer une page ou un e-mail. Les modèles définissent la mise en page de vos pages, vos e-mails et vos thèmes HubSpot. Un modèle se compose de modules et de partials, et peut faire référence à d'autres ressources telles que des feuilles de style et des fichiers JavaScript. Les modèles peuvent être créés soit à l'aide de [HubSpot CLI](/docs/cms/start-building/introduction/react-plus-hubl/react-plus-hubl-quickstart), soit dans le [Gestionnaire de conception de HubSpot](https://knowledge.hubspot.com/fr/design-manager/create-page-email-and-blog-templates-in-the-layout-editor). Pour les créateurs de contenu, le modèle est la première chose qu'ils sélectionneront, à la création d'une page ou d'un e-mail. Découvrez ci-dessous comment créer un modèle, les différents types de modèles et ce qui est inclus dans vos modèles. ## Créer un modèle Pour créer un modèle, vous pouvez utiliser le [gestionnaire de conception dans HubSpot](https://knowledge.hubspot.com/fr/design-manager/create-page-email-and-blog-templates-in-the-layout-editor) ou exécuter la commande CLI `hs create template`. ```shell theme={null} hs create template [dest] ``` | Paramètre | Description | | - | - | | `name` | Le nom du modèle | | `dest` | Le chemin du répertoire local dans lequel vous voulez créer le modèle. S'il n'est pas inclus, le modèle sera créé dans le répertoire dans lequel vous vous trouvez actuellement. | * À l'aide des touches flèches, accédez au [type de modèle](#template-types) que vous souhaitez créer, puis appuyez sur la touche **Entrée**. Le modèle sera alors créé localement. Lorsque vous souhaitez rendre le modèle disponible pour une utilisation dans votre compte HubSpot, [chargez](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#upload) le modèle sur votre compte. Vous pouvez également utiliser la commande [watch](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#watch) pour télécharger automatiquement tous les nouveaux fichiers et les modifications apportées aux fichiers existants dans le répertoire de travail actuel et les répertoires enfants. ## Aperçu d'un modèle Après avoir mis à jour un modèle, vous pouvez le prévisualiser pour vous assurer qu'il s'affiche et agit comme vous l'attendez. Il existe plusieurs façons dans HubSpot de prévisualiser un modèle : * **Prévisualisation d'un modèle dans le gestionnaire de conception :** idéal pour les vérifications visuelles rapides ou lorsque vous devez prévisualiser un article de blog/une liste/un modèle combiné. * **Création d'une nouvelle ressource à partir d'un modèle :** idéal pour tester l'éditeur en glisser-déposer et l'expérience de création de contenu. ### Aperçu avec le gestionnaire de conception Prévisualiser des modèles à l'aide du gestionnaire de conception peut être particulièrement utile pour des vérifications visuelles rapides. L'aperçu du modèle vous permet également de configurer des options d'affichage, telles que les dimensions de viewport. Pour prévisualiser un modèle dans le gestionnaire de conception : * Dans votre compte HubSpot, accédez à **Marketing** > **Fichiers et modèles** > **Outils de conception**. * À l'aide de l'explorateur de fichiers de la barre latérale de gauche, cliquez sur le **modèle** que vous souhaitez prévisualiser. * Dans l'angle supérieur droit, cliquez sur **Aperçu**. * Sélectionnez **Aperçu en ligne avec options d'affichage** pour afficher un aperçu du modèle avec des options pour tester la réactivité et les paramètres de domaine tels que les feuilles de style. Cette option affiche la page dans un iFrame. Cela vous permet également de choisir entre les blogs et l'article de blog ou la vue de liste pour les modèles de blog. * Sélectionnez **Aperçu sans options d'affichage** pour prévisualiser le modèle sans options supplémentaires. ![template-preview-options](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/template-preview-options.png) ### Aperçu avec une nouvelle page Pour modifier les zones de glisser-déposer, les valeurs des paramètres par défaut des modules ou d'autres changements importants, il est préférable de [créer une page de site web](https://knowledge.hubspot.com/fr/website-and-landing-pages/create-and-customize-pages), un [blog](https://knowledge.hubspot.com/fr/blog/create-a-new-blog), un [article de blog](https://knowledge.hubspot.com/fr/blog/create-and-publish-blog-posts) ou un [e-mail](https://knowledge.hubspot.com/fr/marketing-email/create-marketing-emails-in-the-drag-and-drop-email-editor) en utilisant le modèle. Vous pouvez ensuite essayer différentes valeurs de champ de module et tester ce à quoi ressemblera votre modèle une fois en ligne et l'optimiser pour offrir la meilleure expérience au créateur de contenu. Vous pouvez publier ces ressources ou les laisser en mode brouillon à des fins de test. En outre, vous pouvez utiliser la [préparation de contenu](https://knowledge.hubspot.com/fr/website-pages/redesign-and-relaunch-your-site-with-content-staging#new) ou un [compte sandbox de développeur](https://offers.hubspot.com/free-cms-developer-sandbox) pour créer et afficher des ressources sans avoir d'impact sur un compte de production. ## Types de modèle Les modèles peuvent être utilisés pour différents types de contenu, tels que des pages de site web et des articles de blog. Dans les modèles codés, vous désignez le type de modèle en ajoutant une annotation en haut du fichier. Découvrez ci-dessous les différents types de modèles et les annotations que vous pouvez utiliser pour désigner chaque type. > [!WARNING] > > ### Remarque : > > Un créateur de contenu peut échanger le modèle d'une page contre un autre modèle du même type, selon qu'il possède ou non des balises [dnd\_area](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas). > > * Les modèles construits avec l'éditeur visuel de mise en page par glisser-déposer peuvent être remplacés par d'autres modèles par glisser-déposer ou par des modèles codés avec ou sans les balises `dnd_area`. > * Les modèles codés avec des balises *dnd\_area* ne peuvent être échangés que contre d'autres modèles codés avec des balises `dnd_area`. > * Les modèles codés sans balises `dnd_area` ne peuvent être échangés que contre d'autres modèles codés sans balises `dnd_area`. ### Page ```html theme={null} templateType: page ``` Les modèles de page correspondent au type de modèle le plus ouvert. Ils peuvent servir de page web ou de [page de destination](https://blog.hubspot.com/blog/tabid/6307/bid/7177/what-is-a-landing-page-and-why-should-you-care.aspx), quelle qu'en soit la forme. Les [mises en page](#layout-css) ne sont pas pré-remplies avec des composants. Les modèles de page codés sont préremplis avec un balisage sommaire comprenant des balises HubL suggérées pour les méta-informations, le titre, [notamment](#included-cms-files) les en-têtes et pieds de page obligatoires. Les exemples de pages qui utilisent généralement un modèle de page incluent, mais ne sont pas limités à : * [Page d'accueil](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/home.html) * [À propos de nous](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/about.html) * [Contact](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/contact.html) ### E-mail ```html theme={null} templateType: email ``` Les modèles d'e-mails sont utilisés par l'[outil e-mail](https://www.hubspot.fr/products/marketing/email). Ils sont soumis aux exigences les plus strictes, car ils doivent être affichés dans de nombreux clients de messagerie différents et se conformer aux meilleures pratiques pour garantir une bonne délivrabilité. Les modèles d'e-mails [HTML et HubL](/docs/cms/start-building/building-blocks/templates/html-hubl-templates) et ceux du gestionnaire de conception par glisser-déposer sont préremplis de composants de base lors de leur création. Les modèles avec ce `templateType` sont uniquement visibles pour la sélection de modèles lors de la [création d'un e-mail](https://knowledge.hubspot.com/fr/marketing-email/create-and-send-marketing-emails-with-the-updated-classic-editor). Afin de rester conformes à la norme [CAN-SPAM](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers), les modèles d'e-mails comportent un ensemble de [variables obligatoires](https://developers.hubspot.fr/docs/reference/cms/hubl/variables#required-email-template-variables) qui doivent être incluses. Les modèles d'e-mail disposent également d'une fonctionnalité intégrée permettant d'ajouter [inline-css](/docs/cms/start-building/building-blocks/templates/email-template-markup#hs-inline-css-and-data-hse-inline-css) aux éléments ` {% end_require_css %} {##### Module HTML #####} ``` ### Styles et JavaScript * Styles : * Les modules ne doivent pas avoir de groupe de style vide. * Le codage en dur des styles en ligne dans les modules est déconseillé. Au lieu de cela, utilisez des styles en ligne dynamiques en activant les champs pour contrôler le style. * JavaScript : * JavaScript doit pouvoir représenter plusieurs instances d'un module. JavaScript dans JS Pane ne sera chargé qu'une fois par page, quel que soit le nombre d'occurrences de modules. * JavaScript doit référencer les éléments DOM par des noms de classe spécifiques pour garantir que les éléments extérieurs au module ne sont pas affectés par inadvertance. Lors de la création de modules, vous pouvez utiliser une variable intégrée appelée `{{name}}`. Cette variable extrait l'ID d'instance du module (qui peut être utilisé dans le panneau HTML+HubL uniquement) pour favoriser le balisage CSS et JS pour les modules complexes. [Découvrez-en davantage à ce sujet dans la documentation des développeurs.](/docs/cms/reference/modules/files#require-css-block) ## Organisation des champs Les exigences suivantes en matière d'organisation et de regroupement des champs doivent être respectées. ### Onglet Contenu * Lorsqu'il y a au moins un contrôle au sein d'un groupe de champs, tous les contrôles doivent être regroupés en catégories libellées selon leur fonction. * Les champs de module ajoutés à l'onglet *Contenu* doivent permettre de personnaliser le contenu d'un module. Par exemple, les contrôles d'image, d'icône, de texte alternatif et de lien. ### Onglet Styles Les groupes de champs de style de module doivent être cohérents et suivre un modèle. Découvrez ci-dessous l'ordre recommandé pour vos groupes de champs de style. Ces groupes peuvent être soit au niveau supérieur, soit [imbriqués dans un groupe](#multi-level-grouping). Les groupes vides peuvent également être supprimés : * [Préréglages](#presets) * Texte * Arrière-plan * Bordure * Curseur * Angle * Espacement * Alignement * Groupes de styles personnalisés qui ne correspondent pas à ce qui précède * Avancé Les types de champs suivants doivent être contenus dans l'onglet *Styles*, le cas échéant : * [Alignement](/docs/cms/reference/fields/module-theme-fields#alignment) * [Image d'arrière-plan](/docs/cms/reference/fields/module-theme-fields#background-image) * [Bordure](/docs/cms/reference/fields/module-theme-fields#border) * [Couleur](/docs/cms/reference/fields/module-theme-fields#color) * [Police](/docs/cms/reference/fields/module-theme-fields#font) * [Dégradé](/docs/cms/reference/fields/module-theme-fields#gradient) * [Espacement](/docs/cms/reference/fields/module-theme-fields#spacing) * [Alignement du texte](/docs/cms/reference/fields/module-theme-fields#text-alignment) Lorsque vous déplacez des champs de l'onglet *Contenu* vers l'onglet *Styles*, découvrez comment [utiliser le mappage d'alias](/docs/cms/start-building/building-blocks/fields/alias-mapping) pour préserver le style des modules déjà utilisés sur les pages en direct. * Les options d'animation doivent toujours être positionnées à la fin de la liste des groupes de champs. * Les options qui permettent aux créateurs de contenu d'ajouter des extraits de code ou des CSS doivent être regroupées à la fin de la liste des groupes de champs sous un champ intitulé *Avancé*. * Les contrôles doivent être uniformisés dans tous les modules. Par exemple, tous les éléments qui peuvent avoir un contrôle de rayon de bordure doivent proposer ce contrôle. Évitez de proposer des contrôles sur des modules qui sont absents sur d'autres. * Les champs de module ajoutés à l'onglet *Style* doivent permettre de styliser le module. Par exemple : * Les options de style incluent la couleur, le style de texte, l'alignement, l'espacement, la bordure et le rayon d'angle. * Les animations incluent des effets au survol et concernant les diapositives. * Les préréglages incluent des thèmes sombres et clairs qui sont destinés à changer de nombreux styles en même temps. ### Exemples d'organisation des champs #### Préréglages Les préréglages peuvent être utilisés lorsque vous souhaitez donner aux créateurs de contenu un ensemble limité d'options, souvent liées aux paramètres du thème. Par exemple, le module *Icône* inclus dans le thème Growth contient des préréglages pour les couleurs *Dark* et *Light*, ce qui permet une cohérence lorsqu'il est utilisé sur le site web. #### Regroupement multi-niveaux Lorsque vous décidez de garder les champs de style au niveau supérieur ou de les imbriquer, tenez compte de l'exemple suivant. Le module *Icône* inclus dans le thème Growth répertorie tous ses styles au niveau supérieur, car il s'agit d'un composant unique. Ses options de style ont donc toutes un impact sur le composant unique. ![growth-theme-icon-module](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/growth-theme-icon-module.png) Le module *Carte d'intervenant* inclus dans le thème Growth contient plusieurs composants : l'image de la carte et son contenu textuel. Les styles de module sont donc regroupés par composant afin que le créateur de contenu dispose d'un processus plus clair pour le style de chaque composant. ![growth-theme-speaker-card](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/growth-theme-speaker-card.png) #### Regroupement de champs individuels Le module de bouton ci-dessous contient des groupes pour les *préréglages*, le *texte*, l'*arrière-plan* et plus encore. Bien que le groupe de champs *Angle* contienne uniquement le contrôle du rayon, il est toujours regroupé pour créer une expérience de création de contenu uniforme. ![module-requirements-2\_1](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/module-requirements-2_1.png)![button-styles](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/button-styles.png) # Directives du marketplace des modèles HubSpot Source: https://developers.hubspot.fr/docs/cms/marketplace/template-guidelines Le marketplace des modèles HubSpot aide des milliers de clients sans accès direct à un développeur à étendre leur présence en ligne. Il est repose sur la contribution de développeurs comme vous, qui créent des thèmes, modèles et modules esthétiques et faciles d'emploi. Le [marketplace des modèles HubSpot](https://ecosystem.hubspot.com/marketplace/templates) aide des milliers de clients sans accès direct à un développeur à étendre leur présence en ligne. Il est alimenté par des développeurs qui créent des modèles faciles à utiliser pour les clients. Vous pouvez vendre deux types de modèles sur le marketplace des modèles HubSpot : des [thèmes](https://ecosystem.hubspot.com/marketplace/website) et des [modules](https://ecosystem.hubspot.com/marketplace/modules). ## Pourquoi devrais-je vendre des modèles sur le marketplace ? Le marketplace HubSpot a beaucoup à offrir aux développeurs ou aux agences qui cherchent à créer une nouvelle source de revenus. * **Non exclusif :** vous avez travaillé dur pour créer vos modèles. Votre modèle ne devrait pas être uniquement disponible sur notre marketplace. Vous êtes également libre d'utiliser vos modèles en dehors du marketplace pour vos propres projets. * \*\*Créez une fois, vendez plusieurs fois : \*\*lorsque votre modèle est listé sur le marketplace, il devient une opportunité de vente multiple. Il vous suffit de créer une seule fois votre modèle pour ensuite le vendre à plusieurs clients. * \*\*Accélérez la croissance de votre entreprise : \*\*beaucoup de développeurs qui partagent leurs modèles (gratuits et payants) sur le marketplace de HubSpot ont vu leurs entreprises croître à la fois grâce aux revenus du marketplace et aux services supplémentaires demandés par les acheteurs. * **Rejoignez une communauté de créateurs et mettez en valeur vos compétences :** connectez-vous à un écosystème solidaire en pleine croissance pour aider à façonner l'avenir du marketplace des modèles HubSpot tout en apportant plus de visibilité à vos offres et services. ## Présentation et conditions Pour commencer à vendre sur le marketplace de modèles, [créez un compte fournisseur de marketplace de modèles](https://app.hubspot.com/signup-hubspot/asset-provider). Toute soumission de modèle doit respecter les conditions de conformité, de conception et de qualité de code. Chaque type de modèle a également ses propres conditions, qui doivent être remplies afin d'être listé sur le marketplace. Vous pouvez consulter ces critères ci-dessous : Avant de commencer à créer des modèles pour le marketplace, HubSpot recommande vivement de consulter ses directives sur la [création pour le marketplace des modèles HubSpot](https://www.hubspot.com/template-providers), le [branding](https://www.hubspot.com/providers/template/branding-guidelines), l'[utilisation des marques de commerce](https://legal.hubspot.com/tm-usage-guidelines) et l'[utilisation du contenu](https://www.hubspot.com/content-usage-guidelines). Les modèles qui enfreignent ces directives seront immédiatement supprimés du marketplace, comme décrit dans les conditions supplémentaires de HubSpot. ### Exigences en matière de thème Un ensemble portable et contenu de modèles, de modules, de contenus globaux et de paramètres de style conçus pour fonctionner ensemble et permettre une expérience d'édition de contenu conviviale pour les professionnels du marketing. [Consulter les exigences en matière de thème](https://developers.hubspot.com/docs) ### Exigences en matière de module Les thèmes soumis contiennent des modules, qui sont des composants réutilisables pouvant être utilisés dans des modèles ou ajoutés à des pages via des zones de glisser-déposer et des colonnes flexibles. Vous pouvez également soumettre des modules indépendants. Ce sont des modules qui peuvent être ajoutés à n'importe quel thème dans l'éditeur de contenu de HubSpot. [Consulter les exigences en matière de module](https://developers.hubspot.com/docs) ### Conditions relatives aux pages de listing Les conditions auxquelles il faut se conformer lors de la soumission de modèles et de leurs pages de listing sur le marketplace des modèles HubSpot. Ces normes s'appliquent à tous les modèles présents sur le marketplace. [Afficher les conditions relatives aux pages de listing](https://developers.hubspot.com/docs) ### Politiques du marketplace des modèles Conditions et détails de conformité pour les modèles de listing sur le marketplace des modèles. [Afficher les politiques du marketplace des modèles](https://developers.hubspot.com/docs) ## Lister et mettre à jour les thèmes sur le marketplace des modèles Lorsque vous avez créé votre modèle, soumettez-le pour approbation afin qu'il soit répertorié sur le marketplace des modèles HubSpot. Une fois soumis, les modèles feront l'objet d'un processus d'examen et d'approbation par l'équipe du marketplace des modèles HubSpot. [Découvrez comment lister et mettre à jour vos modèles dans le marketplace des modèles.](https://developers.hubspot.com/docs) ## Passerelles de paiement prises en charge HubSpot offre actuellement la possibilité aux fournisseurs du marketplace de se connecter aux passerelles de paiement suivantes pour recevoir des paiements : * PayPal ([pays pris en charge](https://www.paypal.com/us/webapps/mpp/country-worldwide) | [paiements internationaux](https://www.paypal.com/us/cshelp/article/what-are-the-cross-border-fees-when-selling-internationally-help550)) * Stripe ([pays pris en charge](https://stripe.com/global) | [paiements internationaux](https://docs.stripe.com/connect/cross-border-payouts)) Les paiements des clients sont reçus par la méthode de paiement connectée à votre compte de fournisseur de marketplace : * Dans votre compte HubSpot, accédez à **marketplace** > **Informations sur le fournisseur**. * Dans la section *Mode de paiement*, consultez ou mettez à jour les informations de paiement. HubSpot n'est pas responsable des problèmes de passerelle de paiement qui peuvent survenir pendant le processus d'achat. HubSpot ne touche rien sur les transactions, et toutes les transactions sont traitées indépendamment de la plateforme HubSpot. Si votre mode de paiement cesse de fonctionner pour quelque raison que ce soit, vos ressources peuvent être temporairement supprimées de la liste pour éviter une expérience client négative. HubSpot a des clients dans le monde entier. Lors de la configuration de vos passerelles de paiement, nous vous recommandons vivement d'accepter les paiements provenant de devises internationales (paiements internationaux). HubSpot encourage fortement les fournisseurs du marketplace des modèles à utiliser la passerelle de paiement Stripe si elle est disponible dans leur pays. Si Stripe n'est pas [disponible dans votre pays](https://stripe.com/global), nous recommandons l'utilisation de la passerelle de paiement PayPal. ## Demandes de remboursement Vous êtes susceptible de recevoir des demandes de remboursement de la part d'acheteurs. HubSpot recommande d'indiquer clairement votre politique de remboursement dans la description d'un listing et de fournir un lien vers la documentation relative à votre politique de remboursement. HubSpot encourage les fournisseurs à honorer les demandes de remboursement valides. Découvrez-en davantage sur les [directives générales relatives aux demandes de remboursement](https://knowledge.hubspot.com/resources/marketplace-refund-guidelines). ## Gérer vos transactions Une fiche d'informations de transaction est créée dans votre compte fournisseur du marketplace des modèles pour chaque modèle téléchargé par un client. Toutes les transactions seront acheminées dans un pipeline de transactions appelé *Transactions du marketplace* avec la phase *Transactions*. Lorsqu'un remboursement est émis pour une transaction, la propriété *Remboursé à* sera définie sur la fiche d'informations de transaction. Les fournisseurs peuvent [personnaliser le pipeline de transactions ainsi que les phases de transaction](https://knowledge.hubspot.com/object-settings/set-up-and-customize-pipelines) et [utiliser des propriétés de transaction dans des workflows](https://knowledge.hubspot.com/workflows/choose-your-workflow-actions#property-management)[.](https://knowledge.hubspot.com/object-settings/set-up-and-customize-pipelines) ## Suppression de listing de modèle HubSpot se réserve le droit de supprimer les listings de marketplace pour des raisons comprenant, sans s'y limiter : * Des bugs sont présents dans le modèle. * Des modèles tiers sont présents dans la soumission. * Le modèle est incompatible avec les [navigateurs pris en charge par HubSpot](https://knowledge.hubspot.com/account-security/browsers-supported-by-hubspot) * L'utilisation de contenu protégé par des droits d'auteur, comme des images, des icônes, des polices, des fichiers audio et des vidéos qui ne sont pas autorisés pour la distribution. * Des modèles suivent les utilisateurs sans leur consentement éclairé et explicite. * Des modèles (y compris un lien vers du contenu à partir du marketplace des modèles ou de votre démo du modèle) qui comprennent : * La promotion ou l'engagement à des activités illégales. * Du contenu péjoratif, dénigrant et/ou malveillant. * Des revendications malhonnêtes ou fausses. * Du contenu offensant sur la race, la religion, l'âge, le sexe ou l'orientation sexuelle. * Les modules seront supprimés s'ils affectent d'autres éléments sur la page/l'e-mail auquel ils sont ajoutés. ## Questions fréquentes > **Le règlement P2B de l'Union européenne (12 juillet 2020) s'applique-t-il aux marketplaces d'applications et de modèles ?** > > Non, la dernière réglementation P2B de l'Union européenne, entrée en vigueur le 12 juillet 2020, ne s'applique pas aux marketplaces des applications et des modèles de HubSpot. [En savoir plus](https://wayback.archive-it.org/12090/*/https://ec.europa.eu/digital-single-market/en/business-business-trading-practices) > **Dois-je disposer d'un type de compte HubSpot spécifique pour pouvoir soumettre des ressources dans le marketplace ?** > > Un [compte fournisseur du marketplace](https://www.hubspot.com/template-providers) est requis pour effectuer une soumission sur le marketplace des modèles. > > Certains partenaires gèrent leurs listes marketplace dans leur compte partenaire pour utiliser les modèles dans le même compte. D'autres partenaires gèrent leurs listes dans un compte marketplace distinct pour conserver les modèles séparés des autres modèles dans leur outil de gestion de conception. > **Les produits publiés dans le marketplace existent-ils dans mon compte ou dans le système marketplace de HubSpot ?** > > Les produits soumis ou publiés sur le marketplace existent dans le système marketplace de HubSpot. Les fournisseurs peuvent ainsi continuer à les modifier dans leur propre compte sans que les modifications affectent les achats des clients. Pour mettre à jour une liste marketplace, un fournisseur doit à nouveau soumettre la liste afin qu'elle puisse être examinée et publiée à nouveau. > > Les clients ayant acheté des versions précédentes d'un produit dans une liste peuvent [passer à la dernière version](https://knowledge.hubspot.com/resources/marketplace-customers-frequently-asked-questions#update) gratuitement. > **Comment mettre à jour le nom de mon entreprise ?** > > Après avoir répertorié un modèle sur le marketplace, vous devrez contacter le [support HubSpot](https://help.hubspot.com/) pour modifier le nom de votre entreprise. > **Pourquoi ne puis-je pas voir tous mes produits lorsque j'essaye de créer une liste ?** > > Les possibles raisons pour lesquelles vous ne pouvez pas voir un produit lorsque vous essayez de créer une liste sont, entre autres, les suivantes : > > * Le modèle est actuellement listé dans le marketplace ou contient des éléments d'un modèle actuellement répertorié. > * Le modèle n'est pas pris en charge sur le marketplace (e-mails transactionnels, e-mails de ticket, etc.). > * Le modèle est un clone d'un modèle du marketplace. > **Que dois-je utiliser comme lien d'aperçu ?** > > Lors de la création d'une URL de prévisualisation, vous devez utiliser votre propre nom de domaine si disponible. Si vous ne disposez pas d'un domaine disponible, HubSpot fournit à chaque compte un domaine système dans la structure d'URL suivante : `[AccountID].hs-sites.com` > > **Remarque** : HubSpot ne prend pas en charge les aperçus de modèles qui utilisent le sous-domaine `preview.hs-sites.com`. > **Un seul modèle peut-il être utilisé dans plusieurs thèmes ?** > > Oui, un modèle unique peut être utilisé dans plusieurs thèmes. Un exemple commun d'utilisation d'un modèle dans plusieurs thèmes est le cas où un fournisseur propose une version Starter et une version Premium du même thème. > **Dois-je soumettre à nouveau un thème ou un module si j'y apporte des modifications ?** > > Oui. Toute modification apportée à un thème ou à un module doit être soumise à nouveau au marketplace pour validation préalable et approbation par l'équipe qualité. Une fois les modifications approuvées, le listing et le modèle seront mis à jour dans le marketplace pour les clients. > **Comment ajuster le prix d'un thème ou d'un module ?** > > Pour ajuster le prix d'un produit soumis, il faut le soumettre à nouveau au marketplace avec les informations mises à jour. Les prix ne peuvent pas être modifiés de gratuit à payant, ou vice versa une fois qu'un modèle est publié. > **Comment recevoir des paiements marketplace ?** > > Les paiements sont reçus par la méthode de paiement que vous avez connectée à votre profil de fournisseur marketplace. Dans votre compte HubSpot, accédez à \*\*Marketplace \*\* > **Informations sur le fournisseur**. Dans la section *Mode de paiement*, consultez ou mettez à jour les informations de paiement. > > HubSpot ne touche rien sur les transactions, et toutes les transactions sont traitées indépendamment de la plateforme HubSpot. > **Où puis-je obtenir du feedback de pairs ou entrer en contact avec d'autres fournisseurs du marketplace ?** > > Rejoignez le canal #marketplace dans Slack pour les développeurs de HubSpot en vous inscrivant sur [https://developers.hubspot.com/slack](https://developers.hubspot.com/community). > **Lorsqu'un client demande un remboursement, les fichiers téléchargés restent-ils sur son compte HubSpot ?** > > Tous les fichiers associés au modèle ainsi que toutes les dépendances (par exemple, les pages créées avec le modèle, les modèles clonés et les modules) seront supprimés une fois le remboursement effectué. > **Comment puis-je me tenir au courant des dernières exigences et modifications apportées concernant les développeurs ?** > > Pour rester informé des dernières modifications, consultez le [journal des modifications pour les développeurs de HubSpot](https://developers.hubspot.com/changelog) et abonnez-vous. # Politiques relatives à la place de marché des modèles HubSpot Source: https://developers.hubspot.fr/docs/cms/marketplace/template-policies # Exigences relatives aux thèmes du marketplace des modèles HubSpot Source: https://developers.hubspot.fr/docs/cms/marketplace/theme-requirements Découvrez-en davantage sur les exigences auxquelles un thème doit répondre pour être soumis sur le marketplace des ressources. 'Exigences relatives aux thèmes du marketplace des modèles HubSpot'; 'Marketplace des modèles | Exigences relatives aux thèmes (2022)'; 'Découvrez-en davantage sur les exigences auxquelles un thème doit répondre pour être soumis sur le marketplace des ressources.'; Découvrez-en davantage sur les exigences qu'un thème doit remplir pour être soumis dans le marketplace des modèles HubSpot. Si vous débutez dans la création de thèmes, nous vous recommandons vivement d'utiliser le boilerplate de thème CMS gratuit HubSpot, qui peut être téléchargé à partir du [répertoire Git](https://github.com/HubSpot/cms-theme-boilerplate) ou [importé dans l'interface utilisateur du gestionnaire de conception de votre compte](https://www.youtube.com). En outre, vérifiez les [conditions relatives aux pages de listing du modèle](https://developers.hubspot.com/docs) lorsque vous soumettez votre modèle au marketplace des modèles HubSpot. ## Limites concernant les thèmes Tenez compte des limites suivantes par thème : * Les comptes ***CMS Hub*** gratuits ne peuvent pas utiliser la recherche sur le site web, les fonctionnalités CTA, ou les vidéos natives HubSpot. Découvrez-en davantage sur ce qui est inclus dans les abonnements ***CMS Hub*** dans le [catalogue de produits et de services de HubSpot](https://legal.hubspot.com/hubspot-product-and-services-catalog). * Les thèmes sont soumis aux limites suivantes : * 50 modèles [(nombre minimum de pages nécessaires)](#templates-css%2C-sections%2C-page-templates%2C-etc.) * 50 modules (5 au minimum) * 50 sections (5 au minimum) * Les thèmes **ne doivent pas** contenir les éléments suivants : * Modèles d'e-mails * Fonctionnalité HubDB * Fonctions sans serveur * Champs d'objet CRM * [Colonnes flexibles dans les modèles](https://developers.hubspot.com/docs#flexible-columns) **Comparaison entre les modules et les sections** Les sections sont utiles, car les créateurs de contenu ne peuvent les déposer que dans des zones de dépôt pleine largeur sur la page, ce qui vous aide en tant que développeur à garantir un excellent produit fini. En particulier, les sections à disposition fixe, où le créateur de contenu ne peut pas déplacer d'éléments dans la section, sont un excellent outil pour fournir une mise en forme et une mise en page créatives qui ne pourraient pas être obtenues autrement à l'aide de l'éditeur en glisser-déposer. Les sections offrent également des avantages supplémentaires en termes de convivialité pour le créateur de contenu, car il peut sélectionner des modules individuels à l'intérieur de la section, ce qui permet à leurs formulaires de modules d'être plus courts et plus ciblés sur l'élément qu'ils modifient. ## Conditions globales en matière de thème * Tous les thèmes soumis doivent être distincts et originaux. Par exemple, le même thème avec un contenu de copie ou de variable différent n'est pas comptabilisé comme un thème distinct. [En savoir plus sur la conformité du marketplace des modèles HubSpot](https://developers.hubspot.com/docs#template-marketplace-compliance). * Un thème doit être conçu avec des modèles HTML et HubL et des balises [dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas). * Les thèmes doivent respecter une grille de 12 colonnes. ### Structure des fichiers du thème Tous les thèmes doivent contenir une structure de dossier appropriée et être regroupées sous un dossier « parent », qui doit décrire le listing de vos produits. Par exemple, si vous créez un thème nommé « SuperAwesome » pour le marketplace, votre structure doit ressembler à l'image ci-dessous. Découvrez-en davantage sur la [structure des fichiers de thème](https://developers.hubspot.com/docs#theme-file-structure). ![template-name](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/template-name.png) ![file-structure](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/file-structure.png) ### Chemin de fichier local relatif pour les modèles Lorsque vous faites référence à des ressources du thème, vous devez utiliser un chemin de fichier local relatif. La meilleure façon de les inclure est d'utiliser la fonction [get\_asset\_url](/docs/cms/reference/hubl/functions#get-asset-url), qui renvoie l'URL publique d'une ressource, d'un fichier ou d'un modèle. Vous pouvez également [générer cette fonction](/docs/cms/reference/hubl/functions#get-asset-url) soit en faisant un clic droit sur un **fichier** et en sélectionnant **Copier l'URL publique**, soit en cliquant sur **Actions**, puis en sélectionnant **Copier l'URL publique**. Par exemple, une feuille de style référencée par `require_css` et `get_asset_url` doit être formatée comme suit : **Entrée** ```hubl theme={null} {{require_css(get_asset_url('../../css/main.css')) }} ``` **Résultat** ```html theme={null} //cdn2.hubspot.net/hub/1234567/hub_generated/template_assets/1565970767575/custom/styles/style.min.css ``` Dans la vidéo ci-dessous, examinez les différences dans la structure des fichiers de votre compte développeur par rapport aux fichiers livrés à un client de marketplace : ## Performances du thème Un thème doit obtenir un score supérieur aux seuils suivants via Google Lighthouse : * **Accessibilité sur ordinateur :** 65 * **Bonnes pratiques sur ordinateur :** 80 * **Performances sur ordinateur :** 70 * **Performances sur mobile :** 40 Découvrez comment [générer un rapport Google Lighthouse pour votre thème à l'aide de l'LC](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). * Les fichiers de thème doivent pouvoir être minifiés. * La taille des fichiers d'image ne doit pas dépasser 1 Mo. * Toutes les balises d'image doivent avoir un attribut `alt` (la valeur `""` est acceptable). * Toutes les balises d'image doivent avoir un attribut `loading` (la valeur `""` est acceptable). ### Prévisualiser les URL des thèmes Lors de la création d'une URL de prévisualisation, vous devez utiliser votre propre nom de domaine. Vous ne pouvez pas utiliser le domaine fourni par HubSpot avec cette structure d'URL : `[AccountID].hs-sites.com` Un site web en ligne, et non une image du site de démonstration, doit être utilisé. Si, à un moment donné, votre démo en direct devient inaccessible, HubSpot se réserve le droit, moyennant notification au fournisseur, de supprimer votre thème jusqu'à ce que la démo en direct redevienne accessible. ## Utilisation de jQuery jQuery [n'est pas activé par défaut](https://knowledge.hubspot.com/fr/website-pages/include-jquery-across-your-hubspot-pages) dans le compte HubSpot d'un client. Si votre thème repose sur jQuery, une version de jQuery doit être incluse pour s'assurer que le thème fonctionne comme prévu. Par exemple, si vous incluez un module qui nécessite jQuery alors que le reste du site ne le nécessite pas, vous devrez utiliser le code suivant pour charger jQuery : ```hubl theme={null} {# this checks if the "Include jQuery" option in Settings > CMS > Pages is checked #} {% if not site_settings.include_jquery %} {{ require_js("../jquery-3.4.1.js", "footer") }} {% endif %} ``` ## Configuration du thème (Theme.json) Le fichier `theme.json` doit inclure les paramètres suivants : ```json theme={null} // theme.json { "label": "Cool Theme", "preview_path": "./templates/home-page.html", "screenshot_path": "./images/templates/homepage.jpg", "enable_domain_stylesheets": false, "version": "1.0", "author": { "name": "Jon McLaren", "email": "noreply@hubspot.com", "url": "https://theme-provider.com/" }, "documentation_url": "https://theme-provider.com/cool-theme/documentation", "license": "./license.txt", "example_url": "https://theme-provider.com/cool-theme/demo", "is_available_for_new_content": true } ``` Veuillez vérifier votre fichier `theme.json` et vous assurer de ce qui suit : * Le nom du libellé correspond au nom de votre listing de thèmes. * Si vous utilisez le CMS theme boilerplate gratuit de HubSpot, les valeurs du boilerplate ne doivent pas être présentes. Cela inclut les informations sur l'auteur, l'URL de la documentation, l'URL de l'exemple, etc. * L'URL de la documentation résout et contient de la documentation sur l'utilisation de votre thème. * Le chemin d'aperçu est un fichier valide dans votre thème. * Le chemin de capture d'écran est un fichier valide et est lié à votre thème. * L'exemple d'URL résout et conduit à une démonstration de votre thème. N'utilisez pas les sous-domaines `preview.hs-sites.com` ou `[AccountID].hs-sites.com` pour l'exemple d'URL. En savoir plus sur [les paramètres theme.json](https://developers.hubspot.com/docs#theme-json). ## Paramètres du thème (Fields.json) Le fichier `fields.json` contrôle les champs et groupes de champs disponibles dans l'éditeur de thème, y compris les champs de style. Les champs que vous incluez dépendront du degré de contrôle que vous souhaitez donner aux créateurs de contenu dans l'éditeur de page. * Le fichier `fields.json` doit contenir au moins trois champs de couleur. * Pour garantir la compatibilité entre des thèmes et des modules indépendants, les thèmes doivent inclure les conventions d'appellation de police et de couleur standards suivantes : `primary_color`, `secondary_color`, `heading_font` et `body_font`. Découvrez-en davantage sur la [compatibilité module-thème](https://developers.hubspot.com/docs#module-compatibility-with-themes) Si les champs de thème ne disposent pas de champs `primary_color`, `secondary_color`, `heading_font` ou `body_font`, ils peuvent utiliser le champ `alternate_names`. Découvrez-en davantage sur ces [paramètres fields.json](https://developers.hubspot.com/docs#fields-json) et [consultez un exemple de fichier fields.json](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/fields.json) à partir du boilerplate de CMS Hub. Les paramètres du thème doivent également : * Ne pas entrer en conflit avec des styles d'éditeur ou des styles définis via un module. Par exemple, n'utilisez pas `!important` dans votre feuille de style CSS, car il est difficile pour les utilisateurs finaux de le remplacer et cela provoquerait un conflit. * Utiliser des libellés descriptifs pour chaque paramètre afin que les créateurs de contenu sachent ce qu'ils mettent à jour. * S'appliquer à tous les modèles à l'intérieur d'un thème, sauf s'il existe un cas d'utilisation spécifique pour les styles supplémentaires. Par exemple, les modifications apportées au style et à la taille des en-têtes `h1` dans les paramètres du thème doivent s'appliquer à toutes les balises `h1` du thème. Un thème **doit** inclure au minimum les champs de thème suivants : **Champs de typographie :** * Champ de police du corps du texte (balises `p`) * Champs de police `h1` à `h6` * Couleur du lien hypertexte (balises `a`), y compris le style au survol **Champs de formulaire :** * Couleur de l'arrière-plan du formulaire * Couleur de la bordure du formulaire * Couleur de libellé des formulaires * Couleur de la bordure des champs de formulaire * Bouton de formulaire, y compris les paramètres pour le texte du bouton, la couleur d'arrière-plan et le style au survol. En outre : * Les champs de votre thème doivent être regroupés de manière logique. Par exemple, plusieurs champs liés à la typographie doivent être réunis sous un groupe `Typography`. * Les champs de thème doivent avoir des contrôles de couleur et de police distincts pour les boutons et les formulaires, ainsi que des contrôles de couleur, de logo et de police distincts pour l'en-tête et le pied de page. * Si les modules d'un thème utilisent des logos, au moins un champ de logo doit hériter des [paramètres de marque](/docs/cms/start-building/building-blocks/fields/brand-and-settings-inheritance) du compte. Si vous utilisez un champ d'image pour afficher un logo, le champ d'image n'hérite pas obligatoirement des paramètres de marque. ## Modèles (CSS, Sections, Modèles de page, etc.) ### Sections * Vous devez utiliser des [sections](https://developers.hubspot.com/docs#reusable-sections), le cas échéant. Un thème **doit** inclure au minimum cinq sections. * Les sections doivent avoir des captures d'écran uniques et fonctionnelles. * Les sections et les modules ne doivent pas être redondants. ### Modèles de page Un thème doit inclure au minimum les types de modèle suivants : * Un modèle de page de site web ou de page de destination. * Lorsque vous incluez des modèles à plusieurs pages, chaque modèle doit avoir un objectif distinct. Par exemple, une page d'accueil, une page *À propos de nous*, une page de destination pleine largeur et une page de destination avec une barre latérale droite. * Il est recommandé d'inclure au moins huit modèles de page dans un thème. * Des modèles de listing de blog et d'article de blog distincts. * **Modèle de listing de blog :** la page qui affiche tous les articles de blog dans un format de listing (appelé blogroll). Le titre du modèle doit indiquer qu'il s'agit de la page de listing. * **Modèle d'article de blog :** la page de détail d'articles de blog qui affiche les différents articles de blog. Le titre du modèle doit indiquer qu'il s'agit de la page d'article de blog. * Par ailleurs, les commentaires de blog et les cases d'auteur de blog doivent être mis en forme pour correspondre au thème. * Les modèles de page système suivants : * **Modèle d'erreur 404 :** affiché lorsque les visiteurs atteignent une page qui n'existe pas. * **Modèle d'erreur 500 :** affiché lorsque le site rencontre une erreur interne. * **Modèle d'invite de mot de passe :** affiché lorsqu'une page est protégée par un mot de passe. * **Modèle des abonnements :** page de gestion des inscriptions permettant aux destinataires d'e-mails de gérer les types d'e-mails auxquels ils s'abonnent. * **Modèle de mise à jour des abonnements** : la page de confirmation qui apparaît lorsque le destinataire des e-mails met à jour ses préférences d'abonnement. * **Modèle d'enregistrement des désabonnements** : la page qui apparaîtra pour les destinataires des e-mails qui essayent de se désabonner, si HubSpot ne peut déterminer leur adresse e-mail. * **Modèle de résultats de recherche** : affiche les résultats de recherche qui sont retournés lors de l'utilisation de la [recherche du site](/docs/cms/start-building/building-blocks/modules/content-search). Disponible pour les comptes ***CMS Hub*** payants uniquement. ### Nom du modèle de page * Si vous avez des modèles avec des noms similaires, ajoutez des mots descriptifs qui indiquent la différence entre eux. * Maintenez la cohérence de la majuscule, supprimez les traits d'union et évitez d'utiliser des raccourcis (par exemple, utilisez arrière-plan au lieu de ap). * Le nom de votre entreprise ou le nom du thème n'a pas besoin d'être inclus dans le nom du modèle. ## Modules Pour en savoir plus sur les conditions relatives aux modules de thème et aux modules individuels, [cliquez ici](https://developers.hubspot.com/docs). ## Contenu global ### Partiels globaux Les [partiels globaux](/docs/cms/start-building/building-blocks/global-content) sont un type de modèle créé à l'aide de HTML et HubL qui peut être réutilisé sur l'ensemble de votre site web. Les types de partials les plus courants sont les en-têtes de sites Web, les barres latérales et les pieds de page. Découvrez comment [créer des partiels globaux](/docs/cms/start-building/building-blocks/global-content#creating-a-global-content-partial-template-using-local-development-tools). * Les thèmes doivent inclure des partiels globaux. Les - partiels globaux doivent inclure une [zone de glisser-déposer.](https://developers.hubspot.com/docs) Par exemple, vous ne pouvez pas masquer la zone de glisser-déposer avec une classe « masquer ». * Vous devez incorporer des zones de glisser-déposer utilisables dans les en-têtes et les pieds de page. * Pour les menus utilisés globalement à travers un site, les utilisateurs doivent également pouvoir [sélectionner un menu de navigation HubSpot](/docs/cms/start-building/building-blocks/modules/menus-and-navigation) qu'ils ont créé dans les paramètres de leur compte. Évitez d'inclure des modules globaux dans les partiels globaux, car cela peut créer une expérience utilisateur négative. ## Prise en charge multilingue Les thèmes doivent pouvoir prendre en charge plusieurs versions linguistiques et doivent spécifier les langues qu'ils prennent en charge. Pour ce faire, vous pouvez ajouter un [module de sélecteur de langue](/docs/cms/reference/modules/default-modules#language-switcher) dans un en-tête global, ce qui permet aux clients de localiser facilement les options de langue et de choisir la langue de leur choix. * Vous ne devez afficher qu'une seule langue à la fois. Par exemple, évitez d'avoir à la fois l'anglais et l'espagnol dans l'interface utilisateur en même temps. * Évitez d'utiliser du texte codé en dur. Par exemple, plutôt que de coder le texte d'un bouton de listing de blog comme *En savoir plus*, définissez le texte dans un champ afin que l'utilisateur final puisse mettre à jour le texte sans avoir à entrer dans le code. ## Éléments mobiles et réactifs Les thèmes doivent être capables d'adapter leur contenu à l'appareil sur lequel il est consulté. Ils doivent également offrir une bonne expérience utilisateur sur différents appareils. Cela comprend, sans s'y limiter : * Menu de navigation principal * Curseurs et onglets * Grandes images * Éviter le défilement horizontal (sauf intention) # Champs de module et de thème Source: https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields HubSpot dispose de nombreux types de champs différents. Utilisez-les pour ajouter de la flexibilité et de la personnalisation à vos thèmes et modules. Ajoutez des champs aux modules et aux thèmes pour permettre aux créateurs de contenu de contrôler divers aspects d'une page dans l'éditeur de page. Découvrez ci-dessous tous les champs disponibles pour les modules et les thèmes ainsi que leurs propriétés disponibles. Pour plus d'informations sur l'application des champs de module et de thème, y compris les groupes de champs et les champs répétés, consultez la [vue d'ensemble des champs de module et de thème](https://developers.hubspot.fr/docs/cms/reference/fields/overview). ## Propriétés utilisées par tous les champs Tous les champs partagent un ensemble de propriétés communes. Il s'agit de champs généraux, tels que le nom du champ ou le texte d'aide qui s'affiche pour les créateurs de contenu utilisant le champ du module ou du thème. ```json theme={null} { "name" : "is_teaser_img", "label" : "Enable Teaser Image", "required" : false, "locked" : false, "type" : "boolean", "inline_help_text" : "Shows Teaser image when toggled on", "help_text" : "Teaser images are used to help provide visual context to the post.", "default" : false "alias_mapping": { "property_aliases_paths": { "is_teaser_img": ["old_boolean_field_name"] } } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `name` | Chaîne | Le nom du champ, auquel vous ferez référence lors de l'incorporation du champ et de ses valeurs dans le module ou le thème. Ne peut pas contenir d'espaces ou de caractères spéciaux. | `richtext_field, date_field, etc.` | | `label` | Chaîne | Le texte que le créateur de contenu voit en décrivant le champ. Peut contenir des espaces. | `Rich text field, Date field, etc.` | | `required` | Booléen | Permet de définir si le champ peut être laissé vide dans l'éditeur. Si le champ est défini sur `true`, le contenu ne peut pas être publié sans valeur dans le champ. | `false` | | `locked` | Booléen | Permet de définir si le champ est modifiable dans l'éditeur de contenu. Si le champ est défini sur `true`, le champ n'apparaîtra pas dans l'éditeur de contenu. | `false` | | `type` | Chaîne | Le type de champ. Les types de champs sont uniques par champ et se trouvent dans la documentation pour chaque champ ci-dessous. | | | `inline_help_text` | Chaîne | Le texte qui s'affiche intraligne sous le libellé du champ (limite de 400 caractères). À utiliser de préférence pour les informations nécessaires à l'utilisation du champ. Vous pouvez inclure les balises HTML suivantes (les autres balises seront ignorées lors de la restitution) : `a`, `b`, `br`, `em`, `i`, `p`, `small`, `strong`, `span`. | | | `help_text` | Chaîne | Le texte qui s'affiche dans l'éditeur dans une info-bulle au survol pour aider le créateur de contenu (limite de 300 caractères). À utiliser de préférence pour les informations supplémentaires, mais pas nécessaires à l'utilisation du champ. Vous pouvez inclure les balises HTML suivantes (les autres balises seront ignorées lors de la restitution) : `a`, `b`, `br`, `em`, `i`, `p`, `small`, `strong`, `span`. | | | `id` | Chaîne | L'ID unique du champ, qui est défini par HubSpot. Lorsque vous développez localement, vous n'avez pas besoin de spécifier cet identifiant. | | | `visibility` | Tableau | Permet de définir les conditions d'affichage du champ. Par exemple, vous pouvez définir un champ pour qu'il s'affiche uniquement lorsqu'un autre champ de case à cocher a été sélectionné. Découvrez-en davantage sur la [visibilité](https://developers.hubspot.fr/docs/cms/reference/fields/overview#field-visibility). | | | `display_width` | Chaîne | Par défaut, les champs sont en pleine largeur dans l'éditeur. Lorsque deux champs consécutifs dans le fichier `fields.json` sont définis sur `half_width`, ils apparaîtront l'un à côté de l'autre dans l'éditeur. | | | `alias_mapping` | Chaîne | Un alias pour le champ, qui mappe les valeurs de champ existantes à un nouvel emplacement sans interrompre le contenu existant. Cela peut être utile si vous devez mettre à jour un champ qui est actuellement utilisé dans du contenu en ligne, par exemple en déplaçant un champ de l'onglet *Contenu* vers l'onglet *Styles*. En savoir plus sur le [mappage d'alias](/docs/cms/start-building/building-blocks/fields/alias-mapping). | `False` | ## Alignement Permet aux créateurs de contenu de positionner un élément dans un conteneur. Pour activer l'alignement du texte, utilisez le [champ d'alignement du texte](/docs/cms/reference/fields/module-theme-fields#text-alignment). Les champs d'alignement sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview) et peuvent être uniquement utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ d'alignement](https://www.hubspot.fr/hubfs/Alignment-field.png) **JSON** ```json theme={null} { "name": "img_position", "label": "Position Image", "help_text": "Position the image within it's container.", "required": false, "type": "alignment", "default": { "horizontal_align": "CENTER", "vertical_align": "TOP" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant `horizontal_align` et `vertical_align`. | | | `alignment_direction` | Chaîne | Permet de déterminer si seuls les contrôles d'alignement horizontal, vertical ou les deux doivent être affichés. Peut-être :
  • `HORIZONTAL`
  • `VERTICAL`
  • `BOTH`
| `BOTH` | **React** ```jsx theme={null} import { ModuleFields, AlignmentField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant `horizontal_align` et `vertical_align`. | | | `alignmentDirection` | Chaîne | Permet de déterminer si seuls les contrôles d'alignement horizontal, vertical ou les deux doivent être affichés. Peut-être :
  • `HORIZONTAL`
  • `VERTICAL`
  • `BOTH`
| `BOTH` | ## Image d'arrière-plan Ce champ fournit une image d'arrière-plan qui comporte des sous-champs pour la position et la taille de l'arrière-plan. Les champs d'image d'arrière-plan ont une propriété `.css` qui renvoie une CSS basée sur la valeur du champ. [Découvrez-en davantage sur la propriété CSS générée.](https://developers.hubspot.fr/docs/cms/reference/fields/overview#generated-css) Les champs d'image d'arrière-plan sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview) et peuvent être uniquement utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ d'image d'arrière-plan](https://www.hubspot.fr/hubfs/bg_field.png) **JSON** ```json theme={null} { "name": "bg_image", "label": "Background image", "required": false, "type": "backgroundimage", "default": { "src": "https://example.com/img.png", "background_position": "MIDDLE_CENTER", "background_size": "cover" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant la src de l'image, la position et la taille de l'arrière-plan. | `null` | **React** ```jsx theme={null} import { ModuleFields, BackgroundImageField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant la src de l'image, la position et la taille de l'arrière-plan. | `null` | ## Blog Ce champ permet aux éditeurs de contenu de sélectionner un blog et de vous fournir, à vous, le développeur, l'identifiant du blog. Cette fonction est utile dans des situations telles que l'extraction d'informations importantes pour les blogs présentés dans les modules. Vous pouvez utiliser l'identifiant du blog dans les [fonctions HubL](/docs/cms/reference/hubl/functions) de blog pour obtenir des informations telles que les [auteurs du blog](/docs/cms/reference/hubl/functions#blog-authors), les [articles de blog récents](/docs/cms/reference/hubl/functions#blog-recent-posts), les [articles de blog récents avec une mention spécifique](/docs/cms/reference/hubl/functions#blog-recent-tag-posts), etc. Les champs de blog sont pris en charge dans les modules. ![Capture d'écran du champ de blog](https://cdn2.hubspot.net/hubfs/53/Blog%20field.png) **JSON** ```json theme={null} { "name": "blog", "label": "Blog", "required": false, "locked": false, "type": "blog", "default": 1234567890 } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | "default" / ID de blog | Indique quel blog est sélectionné par défaut. Ce paramètre accepte les arguments suivants : 'default' ou un ID de blog (disponible dans l'URL du tableau de bord du blog). | `null` | **React** ```jsx theme={null} import { ModuleFields, BlogField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | "default" / ID de blog | Indique quel blog est sélectionné par défaut. Ce paramètre accepte les arguments suivants : 'default' ou un ID de blog (disponible dans l'URL du tableau de bord du blog). | `null` | ## Booléen Ce champ permet aux éditeurs de contenu d'activer/désactiver une fonctionnalité. Les booléens ne peuvent être que `true` ou `false`. Il est souvent utile de rendre les groupes ou les champs conditionnels sur la base de champs booléens. Si vous pensez avoir besoin de fournir plus de deux états à l'avenir, un champ [Choix](#choice) peut être une meilleure option, car il est plus facilement évolutif en cas de changement de besoins ultérieur. Les champs booléens sont pris en charge à la fois dans les thèmes et les modules. Les champs booléens peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Capture d'écran du champ booléen](https://cdn2.hubspot.net/hubfs/53/Boolean.png) **JSON** ```json theme={null} { "name": "is_teaser_img", "label": "Enable Teaser Image", "required": false, "locked": false, "type": "boolean", "display": "checkbox", "inline_help_text": "Shows Teaser image when toggled on", "help_text": "Teaser images are used to help provide visual context to the post.", "default": false } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Booléen | Permet d'indiquer si l'état par défaut de ce champ est `true` ou `false`. | `false` | | `display` | Chaîne | Permet de choisir le style d'affichage visuel pour le champ. Peut apparaître comme `toggle` ou `checkbox`. | `checkbox` | **React** ```jsx theme={null} import { ModuleFields, BooleanField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Booléen | Permet d'indiquer si l'état par défaut de ce champ est `true` ou `false`. | `false` | | `display` | Chaîne | Permet de choisir le style d'affichage visuel pour le champ. Peut apparaître comme `toggle` ou `checkbox`. | `checkbox` | > [!TIP] > > Une bascule peut faire sens lorsque la valeur du champ active/désactive l'affichage conditionnel d'autres champs. Un autre cas où une bascule peut être utile est celui où le champ représente un changement majeur dans la conception du module. > > Les cases à cocher sont utiles pour les petites modifications qui n'ont pas un effet aussi radical sur l'affichage du module, par exemple pour masquer ou afficher de petits éléments individuels. ## Bordure Ce champ fournit aux créateurs de contenu une interface utilisateur permettant de créer une bordure autour d'un élément. Les champs de bordure ont une propriété `.css` qui renvoie une CSS basée sur la valeur du champ. [Découvrez-en davantage sur la propriété CSS générée.](https://developers.hubspot.fr/docs/cms/reference/fields/overview#generated-css) Les champs de bordure sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview). Les champs de bordure ne peuvent être utilisés que comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Capture d'écran du champ du module de bordure dans l'éditeur de page](https://www.hubspot.com/hs-fs/hubfs/border-module-field.png?width=326\&quality=low) **JSON** ```json theme={null} { "id": "styles.border", "name": "border", "label": "border", "required": false, "locked": false, "allow_custom_border_sides": false, "type": "border", "default": { "top": { "width": { "value": 1, "units": "px" }, "opacity": 100, "style": "solid", "color": "#ffffff" }, "bottom": { "width": { "value": 1, "units": "px" }, "opacity": 100, "style": "solid", "color": "#ffffff" }, "left": null, "right": null } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Booléen | L'objet avec des clés pour le rayon de bordure, les côtés supérieur, inférieur, gauche et droit. | `{}` | **React** ```jsx theme={null} import { ModuleFields, BorderField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Booléen | L'objet avec des clés pour le rayon de bordure, les côtés supérieur, inférieur, gauche et droit. | `{}` | ## Choix Les champs de choix permettent au créateur de contenu de sélectionner un ou plusieurs éléments dans une liste d'options. À l'aide de la propriété `display`, vous pouvez définir les options d'affichage dans un menu déroulant, une case d'option ou des cases à cocher, ou une gamme de boutons. Découvrez-en davantage sur les [options d'affichage des champs de choix ci-dessous](#choice-button-presets). Les champs de choix sont pris en charge à la fois dans les thèmes et les modules. Les champs de choix peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![choice-field-dropdown](https://cdn2.hubspot.net/hubfs/53/5Cdocs/choice-field-dropdown-4.jpg) **JSON** ```json theme={null} { "name": "img_position", "label": "Image Position", "required": false, "locked": false, "multiple": "true", "display": "select", "choices": [ ["img--left", "Image Left - Text Right"], ["img--right", "Text Left - Image Right"] ], "type": "choice", "default": "img--left" } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `choices` | Tableau | Un tableau contenant les options sélectionnables, formatées comme une valeur interne unique suivie d'un libellé. | `[ [ "value 1", "Label 1" ], [ "value 2", "Label 2" ] ]` | | `default` | Valeur | Permet de définir la valeur sélectionnée par défaut dans le tableau de choix. | | | `multiple` | Booléen | Un champ facultatif qui permet de sélectionner plusieurs options lorsqu'il est défini sur `true`. Définissez `display` sur `checkbox` ou `select` pour configurer si le champ s'affiche sous la forme d'une liste de cases à cocher ou d'un menu déroulant. | `false` | | `display` | Chaîne | Permet de définir l'apparence du champ à l'aide de l'une des valeurs suivantes :
  • `select` : permet d'afficher un menu déroulant. Permet de sélectionner plusieurs options lorsque `multiple` est défini sur `true`.
  • `checkbox` : permet d'afficher une liste de cases à cocher sélectionnables. Permet de sélectionner plusieurs options lorsque `multiple` est défini sur `true`, et que `reordering_enabled` est défini sur `false`.
  • `radio` : permet de restituer une liste de case d'option. Ne permet pas de sélectionner plusieurs options.
  • `buttons` : permet d'afficher un ensemble de boutons en fonction de l'élément `preset` spécifié. Ne permet pas de sélectionner plusieurs options.
| `"select"` | | `reordering_enabled` | Booléen | Lorsque cette valeur est définie sur `true`, permet aux créateurs de contenu de réorganiser les options du champ dans l'éditeur. Pour activer cette option, `multiple` doit également être défini sur `true`. | `false` | | `preset` | Chaîne | Permet de configurer le préréglage du bouton à utiliser lorsque `display` est défini sur `buttons`. Pour chaque préréglage, vous devrez configurer les libellés `choices` pour qu'ils correspondent à un ensemble de valeurs spécifique. Découvrez-en davantage sur ces [options prédéfinies](#choice-button-presets) ci-dessous. | | **React** ```jsx theme={null} import { ModuleFields, ChoiceField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `choices` | Tableau | Un tableau contenant les options sélectionnables, formatées comme une valeur interne unique suivie d'un libellé. | `[ [ "value 1", "Label 1" ], [ "value 2", "Label 2" ] ]` | | `default` | Valeur | Permet de définir la valeur sélectionnée par défaut dans le tableau de choix. | | | `multiple` | Booléen | Un champ facultatif qui permet de sélectionner plusieurs options lorsqu'il est défini sur `true`. Définissez `display` sur `checkbox` ou `select` pour configurer si le champ s'affiche sous la forme d'une liste de cases à cocher ou d'un menu déroulant. | `false` | | `display` | Chaîne | Permet de définir l'apparence du champ à l'aide de l'une des valeurs suivantes :
  • `select` : permet d'afficher un menu déroulant. Permet de sélectionner plusieurs options lorsque `multiple` est défini sur `true`.
  • `checkbox` : permet d'afficher une liste de cases à cocher sélectionnables. Permet de sélectionner plusieurs options lorsque `multiple` est défini sur `true`, et que `reordering_enabled` est défini sur `false`.
  • `radio` : permet de restituer une liste de case d'option. Ne permet pas de sélectionner plusieurs options.
  • `buttons` : permet d'afficher un ensemble de boutons en fonction de l'élément `preset` spécifié. Ne permet pas de sélectionner plusieurs options.
| `"select"` | | `reorderingEnabled` | Booléen | Lorsque cette valeur est définie sur `true`, permet aux créateurs de contenu de réorganiser les options du champ dans l'éditeur. Pour activer cette option, `multiple` doit également être défini sur `true`. | `false` | | `preset` | Chaîne | Permet de configurer le préréglage du bouton à utiliser lorsque `display` est défini sur `buttons`. Pour chaque préréglage, vous devrez configurer les libellés `choices` pour qu'ils correspondent à un ensemble de valeurs spécifique. Découvrez-en davantage sur ces [options prédéfinies](#choice-button-presets) ci-dessous. | | ### Préréglages des boutons de choix Pour configurer un champ de choix pour afficher des boutons au lieu d'un menu déroulant, de cases à cocher ou de cases d'option, vous pouvez utiliser l'un des préréglages ci-dessous. Chaque préréglage permet un ensemble spécifique de libellés d'option, que vous devrez inclure dans le tableau `choices`. Ces libellés ne peuvent pas être personnalisés. ```json example.json theme={null} { "name": "layout", "type": "choice", "label": "Layout", "required": false, "locked": false, "display": "buttons", "preset": "layout", "choices": [ ["cards_value", "cards"], ["tiles_value", "tiles"], ["minimal_value", "minimal"] ] } ``` ```text react.txt theme={null} import { ModuleFields, ChoiceField } from '@hubspot/cms-components/fields'; ``` | Préréglage | Choix de libellés | Exemple | | - | - | - | | `case` | `none` \| `upper` \| `lower` | | ![Case preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/choice-field-case-type.png) \| | `expand_icon` | `caret` | `plus` | `chevron` | ![Expand icon preset](https://developers.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/expand_icon-choice-type.png) \| | `icon_background_shape` | `none` | `square` | `rounded` | `circle` | ![Icon background shape preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/choice-button-presets_3.png) \| | `icon_size` | `small` | `medium` | `large` | ![Icon preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/choice-button-presets_5.png) \| | `layout` | `cards` | `tiles` | `minimal` | ![Layout preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/choice-button-presets_6.png) \| | `social_icon_background_shape` | `none` | `square` | `rounded` | `circle` | ![Social icon background preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/choice-button-presets_2.png) \| | `social_icon_size` | `small` | `medium` | `large` | ![Social icon size preset](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/choice-button-presets_4.png) | ## Couleurs Les champs de couleur fournissent une interface de sélection de couleur pour les créateurs de contenu. Ils prennent en charge les couleurs unies ainsi que la transparence. Ils constituent un choix parfait lorsque vous souhaitez donner aux créateurs de contenu le contrôle total des couleurs au sein d'un module. Par défaut, l'entrée d'opacité d'un champ de couleur est masquée pour les modules d'e-mail, car certains clients de messagerie ne respectent pas les règles d'opacité. Vous pouvez afficher le champ d'opacité pour les modules d'e-mail en définissant `show_opacity` sur `true`. Les champs de couleur sont pris en charge à la fois dans les thèmes et les modules. Les champs de couleur peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ de couleur](https://cdn2.hubspot.net/hubfs/53/colorfield.png) **JSON** ```json theme={null} { "name": "bg_color", "label": "Background color", "required": false, "locked": false, "type": "color", "default": { "color": "#ff0000", "opacity": 100 }, "limited_options": ["#000000", "#ffffff"] } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir la couleur et l'opacité sélectionnées par défaut. | `{ "color" : "#ffffff", "opacity" : 100 }` | | `show_opacity` | Booléen | Permet de définir si l'entrée d'opacité est affichée.
  • `true` : l'entrée d'opacité est affichée.
  • `false` : l'entrée d'opacité est masquée.
  • Si elle n'est pas définie, l'entrée d'opacité ne s'affichera pas dans les modules d'e-mail, mais s'affichera dans d'autres types de modules.
| `undefined` | | `limited_options` | Tableau | Un tableau de chaînes de caractères qui masque la grille de couleurs par défaut et remplace la liste des couleurs préférées (le libellé « Favoris » devient « Couleurs disponibles »). Les valeurs du tableau doivent être un code hexadécimal ou une valeur hexadécimale `color` pour n'importe quel chemin d'héritage. | `undefined` | **React** ```jsx theme={null} import { ModuleFields, ColorField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir la couleur et l'opacité sélectionnées par défaut. | `{ "color" : "#ffffff", "opacity" : 100 }` | | `showOpacity` | Booléen | Permet de définir si l'entrée d'opacité est affichée.
  • `true` : l'entrée d'opacité est affichée.
  • `false` : l'entrée d'opacité est masquée.
  • Si elle n'est pas définie, l'entrée d'opacité ne s'affichera pas dans les modules d'e-mail, mais s'affichera dans d'autres types de modules.
| `undefined` | | `limitedOptions` | Tableau | Un tableau de chaînes de caractères qui masque la grille de couleurs par défaut et remplace la liste des couleurs préférées (le libellé « Favoris » devient « Couleurs disponibles »). Les valeurs du tableau doivent être un code hexadécimal ou une valeur hexadécimale `color` pour n'importe quel chemin d'héritage. | `undefined` | ## CTA Les champs call-to-action (CTA) permettent aux utilisateurs de choisir un CTA à afficher. Les CTA sont essentiellement des boutons ou des liens qui peuvent être suivis. Les créateurs de contenu [créent des CTA](https://knowledge.hubspot.com/fr/ctas/create-calls-to-action-ctas) qui peuvent être utilisés sur l'ensemble d'un site. Les champs CTA sont pris en charge dans les modules. Les champs CTA sont disponibles dans **CMS Hub** *Pro* et *Entreprise*. ![Champ call-to-action](https://cdn2.hubspot.net/hubfs/53/Screen%20Shot%202020-02-26%20at%2010.24.18%20PM.png) **JSON** ```json theme={null} { "name": "cta", "label": "CTA", "required": false, "locked": false, "type": "cta", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | Le CTA sélectionné par défaut. Attend un ID de CTA qui peut être trouvé dans l'URL lors de l'édition d'un CTA dans le [Gestionnaire de CTA](https://app.hubspot.com/l/ctas). | `null` | **React** ```jsx theme={null} import { ModuleFields, CTAField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | Le CTA sélectionné par défaut. Attend un ID de CTA qui peut être trouvé dans l'URL lors de l'édition d'un CTA dans le [Gestionnaire de CTA](https://app.hubspot.com/l/ctas). | `null` | ## Objet du CRM Les champs d'objets CRM permettent aux utilisateurs de sélectionner une instance individuelle d'un objet CRM à afficher. `module.fieldname.properties` renvoie les propriétés récupérées de cette instance d'objet. Ainsi, vous n'avez pas besoin d'utiliser la fonction `crm_object()` pour obtenir les données de l'instance d'objet sélectionnée. `module.fieldname.id` renvoie l'identifiant de l'instance d'objet. Les champs d'objets CRM sont pris en charge dans les modules. Les champs d'objets CRM sont disponibles dans **CMS Hub** *Pro* et *Entreprise*. ![Champ d'objet CRM](https://f.hubspotusercontent00.net/hubfs/53/CRM%20Object%20Field.png) **JSON** ```json theme={null} { "name": "crmobject_field", "label": "CRM object", "required": false, "locked": false, "object_type": "CONTACT", "properties_to_fetch": [], "type": "crmobject", "default": { "id": 1 } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `object_type` | Requise | Le type d'objet CRM que l'utilisateur peut choisir. [Types d'objets CRM pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types) | | | `properties_to_fetch` | Tableau | Le tableau des noms de propriétés associées au type d'objet sous forme de chaîne. Exemple : `"date_of_birth"` est une propriété associée à un contact. Utilisez cette option pour limiter les informations disponibles sur la page à ce dont vous avez besoin. | | | `default` | Objet | L'objet avec l'ID de l'instance de l'objet sélectionné par défaut. ID du contact, ID de la société, etc. | `null` | **React** ```jsx theme={null} import { ModuleFields, CRMObjectField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `objectType` | Requise | Le type d'objet CRM que l'utilisateur peut choisir. [Types d'objets CRM pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types) | | | `propertiesToFetch` | Tableau | Le tableau des noms de propriétés associées au type d'objet sous forme de chaîne. Exemple : `"date_of_birth"` est une propriété associée à un contact. Utilisez cette option pour limiter les informations disponibles sur la page à ce dont vous avez besoin. | | | `default` | Objet | L'objet avec l'ID de l'instance de l'objet sélectionné par défaut. ID du contact, ID de la société, etc. | `null` | ## Propriété d'objet du CRM Utilisez le champ Propriété d'objet du CRM pour accéder aux métadonnées de propriété, telles que le libellé et le nom de propriété, à partir d'un type d'objet spécifié. Cela permet aux créateurs de contenu de sélectionner parmi les propriétés de l'objet lorsqu'ils ont besoin d'afficher les détails des propriétés sur une page. Par exemple, vous pouvez ajouter ce champ à un module de tableau personnalisé pour remplir les en-têtes de tableau en fonction des propriétés sélectionnées. Les champs d'objets CRM sont pris en charge dans les modules. ![crm-object-property-dropdown-menu0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/crm-object-property-dropdown-menu0.png) **JSON** ```json theme={null} { "name": "crmobjectproperty_field", "label": "CRM object property", "required": true, "locked": false, "object_type": "contact", "type": "crmobjectproperty", "default": { "property": "field_of_study" } } ``` | Paramètre | Type | Description | | - | - | - | | `object_type` | Requise | Le type d'objet CRM que l'utilisateur peut choisir. Découvrez-en davantage sur les [types d'objet CRM pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). | | `default` | Objet | Contient la propriété par défaut à afficher. | Par ailleurs, vous pouvez utiliser les blocs de texte suivants pour renvoyer d'autres détails sur la propriété : * `{{ module.fieldname.property }}` : permet de renvoyer le nom interne de la propriété. * `{{ module.fieldname.property_definition.label }}` : permet de renvoyer le libellé de la propriété. * `{{ module.fieldname.property_definition.type }}` : renvoie le type de propriété (par exemple : chaîne). **React** ```jsx theme={null} import { ModuleFields, CRMObjectPropertyField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | | - | - | - | | `objectType` | Requise | Le type d'objet CRM que l'utilisateur peut choisir. Découvrez-en davantage sur les [types d'objet CRM pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). | | `default` | Objet | Contient la propriété par défaut à afficher. | ## Date Les champs de date offrent une interface de sélection de dates qui permet aux créateurs de contenu de sélectionner facilement une date. Renvoie un horodatage que vous pouvez utiliser dans votre code. Les champs de date sont pris en charge dans les modules. ![Champ de date avec sélecteur de calendrier ouvert](https://cdn2.hubspot.net/hubfs/53/date%20field.png) **JSON** ```json theme={null} { "name": "event_start_date", "label": "Event Date", "required": false, "locked": false, "type": "date", "default": 1577854800000 } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Horodatage | L'horodatage Unix Epoch pour la date et l'heure que vous souhaitez utiliser par défaut. Laissez ce champ vide pour permettre au sélecteur de date et d'heure de lancer le créateur de contenu à la date et à l'heure actuelle du sélecteur. | `null` | **React** ```jsx theme={null} import { ModuleFields, DateField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Horodatage | L'horodatage Unix Epoch pour la date et l'heure que vous souhaitez utiliser par défaut. Laissez ce champ vide pour permettre au sélecteur de date et d'heure de lancer le créateur de contenu à la date et à l'heure actuelle du sélecteur. | `null` | ## Date et heure Les champs de date et d'heure offrent une interface de sélection de dates comme le champ de date, ainsi qu'un sélecteur d'heure pour permettre aux créateurs de contenu de sélectionner facilement une date et une heure de la journée. Renvoie un horodatage que vous pouvez utiliser dans votre code. Les champs de date et d'heure sont pris en charge dans les modules. ![Début de l'événement](https://cdn2.hubspot.net/hubfs/53/Event%20Start.png) **JSON** ```json theme={null} { "name": "event_start", "label": "Event Start", "required": false, "locked": false, "type": "datetime", "default": 1577854800000 } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Horodatage | L'horodatage Unix Epoch pour la date et l'heure que vous souhaitez utiliser par défaut. Laissez ce champ vide pour permettre au sélecteur de date et d'heure de lancer le créateur de contenu à la date et à l'heure actuelle du sélecteur. | `null` | **React** ```jsx theme={null} import { ModuleFields, DateTimeField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Horodatage | L'horodatage Unix Epoch pour la date et l'heure que vous souhaitez utiliser par défaut. Laissez ce champ vide pour permettre au sélecteur de date et d'heure de lancer le créateur de contenu à la date et à l'heure actuelle du sélecteur. | `null` | ## Adresse e-mail Les champs d'adresse e-mail permettent à un utilisateur de sélectionner plusieurs adresses e-mail. Cela pourrait être utilisé pour afficher les informations de contact. Le champ e-mail renvoie un tableau d'adresses e-mail sélectionnées que vous pouvez faire défiler. Les champs d'e-mails sont pris en charge dans les modules. ![email-field](https://f.hubspotusercontent00.net/hubfs/53/email-field.png) **JSON** ```json theme={null} { "name": "emails", "label": "Email address", "required": false, "locked": false, "type": "email", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Tableau | Le tableau de chaînes d'adresses d'e-mail `["bob@example.com", "dennis@example.com"]` | `null` | **React** ```jsx theme={null} import { ModuleFields, EmailField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Tableau | Le tableau de chaînes d'adresses d'e-mail `["bob@example.com", "dennis@example.com"]` | `null` | ## Intégrer Les champs d'intégration permettent à l'utilisateur d'ajouter une URL d'un [oEmbedsite compatible](https://oembed.com/#section7) ou de coller un code d'intégration d'un autre site. Pour en savoir plus sur l'utilisation de oEmbed sur HubSpot, et voir des cas d'utilisation, consultez notre [document oEmbed ](/docs/cms/start-building/building-blocks/fields/oembed). ![Champ d'intégration](https://f.hubspotusercontent00.net/hubfs/53/Developer%20Site/assets/images/module-theme-fields/embed-field.jpg) **JSON** ```json theme={null} { "name": "embed_field", "label": "Embed", "required": false, "locked": false, "supported_source_types": ["oembed", "html"], "supported_oembed_types": ["photo", "video", "link", "rich"], "type": "embed", "default": { "source_type": "oembed" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `supported_source_types` | Tableau | Les types de sources pris en charge pour les URL oEmbed (`oembed`), le code HTML intégré (`html`) ou Media Bridge (`media_bridge`). | `["oembed", "html"]` | | `supported_oembed_types` | Tableau | Type oEmbed pris en charge, y compris `"photo"`, `"video"`, `"link"` et `"rich"`. Ne s'applique pas aux supported\_source\_types de html | `[ "photo", "video", "link", "rich" ]` | | `supported_media_bridge_providers` | Tableau | Le tableau d'identifiants de fournisseurs qui déterminent quels fournisseurs Media Bridge sont disponibles pour sélectionner du contenu. Remarque : Ce paramètre sera également rempli lors de l'installation d'une [application Media Bridge Provider](https://ecosystem.hubspot.com/marketplace/apps/apps-for-media). | | | `type` | Chaîne | Ce paramètre est toujours défini sur `"embed"` | `"embed"` | | `default` | Dict. | Un tableau contenant le paramètre `"source_type"`. Ce paramètre a une valeur basée sur une chaîne parmi les options fournies dans le paramètre `"supported_source_types"`. | `oembed` | **React** ```jsx theme={null} import { ModuleFields, EmbedField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `supportedSourceTypes` | Tableau | Les types de sources pris en charge pour les URL oEmbed (`oembed`), le code HTML intégré (`html`) ou Media Bridge (`media_bridge`). | `["oembed", "html"]` | | `supportedOembedTypes` | Tableau | Type oEmbed pris en charge, y compris `"photo"`, `"video"`, `"link"` et `"rich"`. Ne s'applique pas aux supported\_source\_types de html | `[ "photo", "video", "link", "rich" ]` | | `supportedMediaBridgeProviders` | Tableau | Le tableau d'identifiants de fournisseurs qui déterminent quels fournisseurs Media Bridge sont disponibles pour sélectionner du contenu. Remarque : Ce paramètre sera également rempli lors de l'installation d'une [application Media Bridge Provider](https://ecosystem.hubspot.com/marketplace/apps/apps-for-media). | | | `type` | Chaîne | Ce paramètre est toujours défini sur `"embed"` | `"embed"` | | `default` | Dict. | Un tableau contenant le paramètre `"source_type"`. Ce paramètre a une valeur basée sur une chaîne parmi les options fournies dans le paramètre `"supported_source_types"`. | `oembed` | ## Fichier Les champs de fichiers permettent à l'utilisateur de charger un fichier dans le gestionnaire de fichiers ou le gestionnaire de documents, et facilitent l'ajout d'éléments qui se trouvent à ces emplacements. Cela peut être utile pour créer des liens vers des fichiers PDF ou des fichiers d'autres formats. Pour afficher des images sur une page, vous devez utiliser le champ image. Les champs de fichiers sont pris en charge dans les modules. ![Champ de fichier](https://f.hubspotusercontent00.net/hubfs/53/File%20field.png) **JSON** ```json theme={null} { "name": "file_field", "label": "File", "required": false, "locked": false, "type": "file", "picker": "file", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'URL du fichier. | `null` | | `picker` | Chaîne | Valeurs acceptables : « fichier », « document », « image ». Le sélecteur affiche les ressources chargées soit dans le gestionnaire de fichiers, soit dans le gestionnaire de documents, en fonction de ce paramètre. | `file` | **React** ```jsx theme={null} import { ModuleFields, FileField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'URL du fichier. | `null` | | `picker` | Chaîne | Valeurs acceptables : « fichier », « document », « image ». Le sélecteur affiche les ressources chargées soit dans le gestionnaire de fichiers, soit dans le gestionnaire de documents, en fonction de ce paramètre. | `file` | ## E-mail de suivi Les champs d'e-mail de suivi permettent au créateur de contenu de désigner l'e-mail qui sera envoyé en réponse à la soumission de formulaire. Cela fonctionne en tandem avec la [balise de formulaire HubL](/docs/cms/reference/hubl/tags/standard-tags#form), via le paramètre `simple_email_campaign_id`. Les champs d'e-mail de suivi sont pris en charge dans les modules. ![champ d'e-mail de suivi](https://f.hubspotusercontent00.net/hubfs/53/followup%20email%20field.png) **JSON** ```json theme={null} { "name": "followup_email", "label": "Followup email", "required": false, "locked": false, "type": "followupemail", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'ID d'e-mail | `null` | **React** ```jsx theme={null} import { ModuleFields, FollowUpEmailField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'ID d'e-mail | `null` | ## Police Les champs de police offrent aux créateurs de contenu des commandes de base pour le style de police. Les créateurs de contenu peuvent choisir la taille, la couleur, la famille de polices et le format (gras, italique et souligné). Les polices répertoriées sont toutes des polices standards sûres pour le web. Ces polices proviennent de [Google Fonts](https://fonts.google.com/) mais sont mises à disposition par HubSpot directement sur le domaine sur lequel la page se charge. Les champs de police sont pris en charge à la fois dans les thèmes et les modules. Les champs de police peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ de police](https://cdn2.hubspot.net/hubfs/53/font%20field.png) > [!WARNING] > > ### Remarque : > > * La famille de police est déterminée par la combinaison des propriétés `font` et `font_set`. Vous devez inclure les deux pour charger la police. Lorsque vous [héritez de champs](https://developers.hubspot.fr/docs/cms/reference/fields/overview#inherited-fields), cela signifie que vous devez hériter des deux valeurs. > * Masquer les sous-champs liés à la CSS avec `visibility` n'empêchera pas la sortie de la CSS dans le style renvoyé dans l'objet de champ. Vous devrez toujours inclure manuellement la CSS dans l'objet `styles`. **JSON** ```json theme={null} { "name": "font", "label": "Font", "required": false, "locked": false, "load_external_fonts": true, "type": "font", "default": { "size": 12, "font": "Merriweather", "font_set": "GOOGLE", "size_unit": "px", "color": "#000", "styles": {} }, "visibility": { "hidden_subfields": { "font": true, "size": true } } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet police avec des paramètres pour la taille, l'unité de taille, la couleur et les styles pour le gras, l'italique et le soulignement. | `{ "size" : 12, "size_unit" : "px", "color" : "#000", "styles" : { } }` | | `load_external_fonts` | Booléen | HubSpot charge automatiquement la police web sélectionnée sur la page si la police est sélectionnée et référencée par HubL dans une feuille de style ou dans un module. Définissez cette valeur sur faux, si vous chargez déjà la police sur la page. Ainsi, la police ne sera pas chargée deux fois. | `true` | | `visibility` | Objet | En utilisant l'objet imbriqué `hidden_subfields`, vous pouvez définir un booléen pour les commandes du champ Police à masquer. Les sous-champs possibles sont : `font`, `size`, `bold`, `italic`, `underline`, et `color`. | | | `variant` | Chaîne | Si vous utilisez une police web, la variante de la police que vous souhaitez utiliser. Par exemple : pour utiliser la version 700 d'une police, définissez cette valeur sur `"700"`. Pour utiliser la version 400 d'une police italique, définissez cette valeur sur `"400i"`. | | | `limited_options` | Tableau | Tableau de chaînes de caractères qui remplace la liste de toutes les options de police. Les valeurs du tableau doivent être un nom de police codé en dur ou une propriété de police `name` à n'importe quel chemin d'héritage. Par exemple : `theme.typography.body_text.name`. | `undefined` | **React** ```jsx theme={null} import { ModuleFields, FontField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet police avec des paramètres pour la taille, l'unité de taille, la couleur et les styles pour le gras, l'italique et le soulignement. | `{ "size" : 12, "size_unit" : "px", "color" : "#000", "styles" : { } }` | | `loadExternalFonts` | Booléen | HubSpot charge automatiquement la police web sélectionnée sur la page si la police est sélectionnée et référencée par HubL dans une feuille de style ou dans un module. Définissez cette valeur sur faux, si vous chargez déjà la police sur la page. Ainsi, la police ne sera pas chargée deux fois. | `true` | | `visibility` | Objet | En utilisant l'objet imbriqué `hidden_subfields`, vous pouvez définir un booléen pour les commandes du champ Police à masquer. Les sous-champs possibles sont : `font`, `size`, `bold`, `italic`, `underline`, et `color`. | | | `variant` | Chaîne | Si vous utilisez une police web, la variante de la police que vous souhaitez utiliser. Par exemple : pour utiliser la version 700 d'une police, définissez cette valeur sur `"700"`. Pour utiliser la version 400 d'une police italique, définissez cette valeur sur `"400i"`. | | | `limitedOptions` | Tableau | Tableau de chaînes de caractères qui remplace la liste de toutes les options de police. Les valeurs du tableau doivent être un nom de police codé en dur ou une propriété de police `name` à n'importe quel chemin d'héritage. Par exemple : `theme.typography.body_text.name`. | `undefined` | ## Formulaire Les champs de formulaire permettent à un créateur de contenu de concevoir un formulaire dans son compte. Vous pouvez ensuite l'utiliser pour rendre un formulaire sur une page en utilisant la [balise de formulaire HubL](/docs/cms/reference/hubl/tags/standard-tags#form). Les champs de formulaire sont pris en charge dans les modules. ![form field-Aug-21-2020-08-09-55-35-PM](https://f.hubspotusercontent00.net/hubfs/53/form%20field-Aug-21-2020-08-09-55-35-PM.png) **JSON** ```json theme={null} { "id": "idNumber", "name": "form_field_name", "display_width": null, "label": "Form", "required": false, "locked": false, "type": "form", "disable_inline_form_editing": true, "required_property_types": ["TICKET"], "support_all_webinar_types": true, "embed_versions": ["v2", "v4"], "default": { "response_type": "inline", "message": "Thanks for submitting the form." } } ``` | Paramètre | Type | Description | | - | - | - | | `default` | Objet | Un objet contenant les détails de la réponse de soumission du formulaire. Comprend les paramètres suivants :
  • `response_type`, qui peut être l'un des suivants :
    • `inline:` un message texte intraligne.
    • `redirect` : permet de rediriger le visiteur après la soumission.
  • `message` : le texte à afficher après la soumission du formulaire.
  • `redirect_id` : pour les formulaires redirigés, définissez un ID de contenu HubSpot pour rediriger les contributeurs vers une page HubSpot.
  • `redirect_url` : pour les formulaires redirigés, définissez sur une URL spécifique pour rediriger les contributeurs vers une page.
| | `disable_inline_form_editing` | Chaîne | Permet de définir la propriété `disable_inline_form_editing` sur `true` pour masquer tous les contrôles de modification de formulaire intraligne dans le module de formulaire. Cela inclut les champs du formulaire, le texte du bouton d'envoi, les options de confidentialité et de consentement des données et le CAPTCHA. | | `required_property_types` | Tableau | Un tableau qui indique les formulaires pouvant être sélectionnés en fonction des types de propriétés des champs de formulaire. Les valeurs sont : `"CONTACT"`, `"COMPANY"` et `"TICKET"`. | | `support_all_webinar_types` | Booléen | Lorsqu'il est défini sur `true`, le formulaire affiche un sélecteur de webinar plus générique qui permet de sélectionner des webinars Microsoft Teams en plus de GoToWebinar. Les valeurs du champ de formulaire changeront également légèrement pour enregistrer `webinar_id` et `webinar_source` au lieu de `gotowebinar_webinar_key`. Vous devrez repasser ces valeurs propriété plus génériques dans la [balise de formulaire](/docs/cms/reference/hubl/tags/standard-tags#form) à côté de `gotowebinar_webinar_key`. | | `embed_versions` | Tableau | Un tableau qui indique les formulaires pouvant être sélectionnés en fonction de la version du formulaire. Les valeurs comprennent `"v2"` pour les formulaires hérités et `"v4"` pour les nouveaux formulaires de l'éditeur. | **React** ```jsx theme={null} import { ModuleFields, FormField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | | - | - | - | | `default` | Objet | Un objet contenant les détails de la réponse de soumission du formulaire. Comprend les paramètres suivants :
  • `response_type`, qui peut être l'un des suivants :
    • `inline:` un message texte intraligne.
    • `redirect` : permet de rediriger le visiteur après la soumission.
  • `message` : le texte à afficher après la soumission du formulaire.
  • `redirect_id` : pour les formulaires redirigés, définissez un ID de contenu HubSpot pour rediriger les contributeurs vers une page HubSpot.
  • `redirect_url` : pour les formulaires redirigés, définissez sur une URL spécifique pour rediriger les contributeurs vers une page.
| | `disableInlineFormEditing` | Chaîne | Permet de définir la propriété `disableInlineFormEditing` sur `true` pour masquer tous les contrôles de modification de formulaire intraligne dans le module de formulaire. Cela inclut les champs du formulaire, le texte du bouton d'envoi, les options de confidentialité et de consentement des données et le CAPTCHA. | | `requiredPropertyTypes` | Tableau | Un tableau qui indique les formulaires pouvant être sélectionnés en fonction des types de propriétés des champs de formulaire. Les valeurs sont : `"CONTACT"`, `"COMPANY"` et `"TICKET"`. | | `supportAllWebinarTypes` | Booléen | Lorsqu'il est défini sur `true`, le formulaire affiche un sélecteur de webinar plus générique qui permet de sélectionner des webinars Microsoft Teams en plus de GoToWebinar. Les valeurs du champ de formulaire changeront également légèrement pour enregistrer `webinar_id` et `webinar_source` au lieu de `gotowebinar_webinar_key`. Vous devrez repasser ces valeurs propriété plus génériques dans la [balise de formulaire](/docs/cms/reference/hubl/tags/standard-tags#form) à côté de `gotowebinar_webinar_key`. | | `embedVersions` | Tableau | Un tableau qui indique les formulaires pouvant être sélectionnés en fonction de la version du formulaire. Les valeurs comprennent `"v2"` pour les formulaires hérités et `"v4"` pour les nouveaux formulaires de l'éditeur. | ## Dégradé Ce champ permet aux créateurs de contenu de créer et de configurer des dégradés. Pour l'instant, les dégradés linéaires prennent en charge jusqu'à 5 arrêts de couleur. Les champs de dégradé ont une propriété `.css` qui renvoie une CSS basée sur la valeur du champ. [Découvrez-en davantage sur la propriété CSS générée.](https://developers.hubspot.fr/docs/cms/reference/fields/overview#generated-css) Les champs de dégradé sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview). Les champs de dégradé ne peuvent être utilisés que comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ de dégradé](https://www.hubspot.com/hs-fs/hubfs/gradient_field.png?width=348\&quality=low) **JSON** ```json theme={null} { "name": "bg_gradient", "label": "Background gradient", "help_text": "Sets a gradient behind the content", "required": false, "type": "gradient", "default": { "colors": [ { "color": { "r": 0, "g": 0, "b": 0, "a": 1 } }, { "color": { "r": 255, "g": 255, "b": 255, "a": 1 } } ], "side_or_corner": { "verticalSide": "BOTTOM", "horizontalSide": null } } } ``` | Paramètre | Type | Description | | - | - | - | | `default` | Objet | Objet contenant les paramètres directionnels d'un dégradé ("side\_or\_corner") et les arrêts de couleur pour le dégradé sous forme de tableau d'objets. | **React** ```jsx theme={null} import { ModuleFields, GradientField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | | - | - | - | | `default` | Objet | Objet contenant les paramètres directionnels d'un dégradé ("side\_or\_corner") et les arrêts de couleur pour le dégradé sous forme de tableau d'objets. | ## Ligne HubDB Les champs de ligne HubDB permettent à un créateur de contenu de sélectionner une ligne individuelle (ou des lignes si vous utilisez des champs répétiteurs) dans un tableau défini. Vous pouvez ensuite utiliser ce champ pour créer des listes, des tableaux, des ressources, etc. définis par l'utilisateur. Les champs de ligne HubDB sont pris en charge dans les modules. Les champs de ligne HubDB sont disponibles dans **CMS Hub** *Pro* et *Entreprise*. ![hubdb-row-field](https://f.hubspotusercontent00.net/hubfs/53/Developer%20Site/assets/images/module-theme-fields/hubdb-row-field.png) **JSON** ```json theme={null} { "name": "hubdbrow_field", "label": "HubDB row", "required": false, "locked": false, "table_name_or_id": "3096859", "columns_to_fetch": ["name", "price", "desc"], "display_columns": ["name", "price", "desc"], "display_format": "%0 - %1 :::: %2", "type": "hubdbrow", "default": { "id": 4450468943 } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `table_name_or_id` | Chaîne | Le nom ou l'ID du tableau HubDB. Ce champ est obligatoire. | | | `columns_to_fetch` | Tableau | Un tableau de noms de colonnes à extraire de la table. Renverra toutes les colonnes du tableau si vide. | `[]` | | `display_columns` | Tableau | Un tableau de noms de colonnes à utiliser dans le libellé de choix. Ne renverra que la première colonne du tableau si vide. | `[]` | | `display_format` | Chaîne | Le format dans lequel vous voulez que les données de colonnes s'affichent dans le sélecteur de lignes de HubDB en utilisant le symbole pour cent suivi d'un nombre pour désigner une colonne. **Ex :** *%0 (%1) apparaîtrait comme Column0Value (Column1Value)* | `""` | | `default` | Objet | Un objet contenant « id » pour définir la ligne HubDB par défaut. | `{ "id" : null }` | **React** ```jsx theme={null} import { ModuleFields, HubDBRowField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `tableNameOrId` | Chaîne | Le nom ou l'ID du tableau HubDB. Ce champ est obligatoire. | | | `columnsToFetch` | Tableau | Un tableau de noms de colonnes à extraire de la table. Renverra toutes les colonnes du tableau si vide. | `[]` | | `displayColumns` | Tableau | Un tableau de noms de colonnes à utiliser dans le libellé de choix. Ne renverra que la première colonne du tableau si vide. | `[]` | | `displayFormat` | Chaîne | Le format dans lequel vous voulez que les données de colonnes s'affichent dans le sélecteur de lignes de HubDB en utilisant le symbole pour cent suivi d'un nombre pour désigner une colonne. **Ex :** *%0 (%1) apparaîtrait comme Column0Value (Column1Value)* | `""` | | `default` | Objet | Un objet contenant « id » pour définir la ligne HubDB par défaut. | `{ "id" : null }` | ## Tableau HubDB Les champs de tableau HubDB permettent à un créateur de contenu de désigner un HubDB dans son compte. Vous pouvez ensuite l'utiliser pour rendre un formulaire sur une page en utilisant la [balise de formulaire HubL](/docs/cms/reference/hubl/tags/standard-tags#form). Renvoie l'identifiant du tableau, que vous pouvez utiliser avec les [fonctions HubL de HubDB](/docs/cms/start-building/features/storage/hubdb#access-hubdb-data-using-hubl)). Les champs de tableau HubDB sont pris en charge dans les modules. Les champs de tableau HubDB sont disponibles dans **CMS Hub***Pro* et *Entreprise*. ![Champ HubDB](https://cdn2.hubspot.net/hubfs/53/HubDB%20field.png) **JSON** ```json theme={null} { "name": "recipe_table", "label": "Recipe Table", "required": false, "locked": false, "type": "hubdbtable", "default": 2010782 } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'ID de tableau HubDB | `null` | **React** ```jsx theme={null} import { ModuleFields, HubDBTableField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | L'ID de tableau HubDB | `null` | ## Icône Les champs d'icônes offrent une interface utilisateur avec sélecteur d'icônes qui permet aux créateurs de contenu d'ajouter plus facilement des icônes à vos modules. Le champ d'icône est préchargé avec les icônes FontAwesome. Les champs d'icônes sont pris en charge dans les modules. Les champs d'icônes peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![champ d'icône](https://cdn2.hubspot.net/hubfs/53/icon%20field.png) **JSON** ```json theme={null} { "name": "icon_field", "label": "Icon", "required": false, "locked": false, "icon_set": "fontawesome-6.4.2", "type": "icon", "default": { "name": "accessible-icon", "unicode": "f368", "type": "REGULAR" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet icône | | | `icon_set` | Chaîne | Le jeu d'icônes FontAwesome à utiliser. Les valeurs possibles sont :
  • `fontawesome-6.4.2`
  • `fontawesome-5.14.0`
  • `fontawesome-5.0.10`
| `fontawesome-5.0.10` | **React** ```jsx theme={null} import { ModuleFields, IconField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet icône | | | `iconSet` | Chaîne | Le jeu d'icônes FontAwesome à utiliser. Les valeurs possibles sont :
  • `fontawesome-6.4.2`
  • `fontawesome-5.14.0`
  • `fontawesome-5.0.10`
| `fontawesome-5.0.10` | ## Image Les champs d'image offrent aux créateurs de contenu une interface intuitive pour ajouter des images à un module ou à un thème. Les champs d'image fournissent une interface avec sélecteur de fichiers qui liste les images du gestionnaire de fichiers. Comme les images peuvent être utilisées et affichées de différentes manières, les développeurs peuvent limiter les options de taille disponibles pour le créateur de contenu dans l'interface utilisateur et permettre le [chargement asynchrone des images](/docs/cms/best-practices/testing-staging-performance/lazy-loading). ![Champ d'image](https://cdn2.hubspot.net/hubfs/53/Image%20Field.png) Les champs d'image sont pris en charge dans les modules. Les images peuvent être utilisées comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). Vous ne devez utiliser les champs d'image comme champs de style que si l'image a un caractère purement informatif, qu'elle n'est pas porteuse de sens et qu'elle n'est pas une [image de fond](#background-image). Il s'agit de respecter les meilleures pratiques en matière [d'accessibilité](/docs/cms/best-practices/improve-existing-sites/accessibility). **JSON** ```json theme={null} { "name": "image_field", "label": "Image", "required": false, "locked": false, "responsive": true, "resizable": true, "show_loading": false, "type": "image", "default": { "size_type": "exact", "src": "", "alt": "image-alt-text", "loading": "lazy", "width": 128, "height": 128, "max_width": 128, "max_height": 128 } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir les propriétés pour la taille de l'image, le texte alternatif, etc. Peut contenir les propriétés suivantes :
  • `size_type` : si l'image est automatiquement ou manuellement dimensionnée :
    • `"auto"` : HubSpot ajustera automatiquement la taille de l'image en fonction de ses dimensions originales.
    • `"auto_custom_max"` : HubSpot ajustera automatiquement la taille de l'image en fonction des dimensions maximales définies à l'aide des propriétés `"max_height"` et `"max_width"`.
    • `"exact":` HubSpot dimensionnera l'image en fonction des dimensions définies à l'aide des propriétés `"height"` et `"width"`.
  • `src` : l'URL de l'image par défaut. Doit être un chemin absolu vers une image.
  • `alt` : le texte alternatif par défaut de l'image.
  • `loading` : les [options de chargement asynchrone de l'image](/docs/cms/best-practices/testing-staging-performance/lazy-loading). Peut-être défini comme `"disabled"` (par défaut), `"eager"`, ou `"lazy"`.
| `{ "size_type" : "auto", "src" : "", "alt" : null, "loading": "disabled" }` | | `responsive` | Booléen | Permet de déterminer si l'image doit agir de manière réactive ou avoir une hauteur et une largeur fixes. | `true` | | `show_loading` | Booléen | Permet de déterminer si les commandes permettant de choisir le [chargement asynchrone de](/docs/cms/best-practices/testing-staging-performance/lazy-loading) l'image sont affichées dans l'éditeur de page. | `false` | **React** ```jsx theme={null} import { ModuleFields, ImageField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir les propriétés pour la taille de l'image, le texte alternatif, etc. Peut contenir les propriétés suivantes :
  • `size_type` : si l'image est automatiquement ou manuellement dimensionnée :
    • `"auto"` : HubSpot ajustera automatiquement la taille de l'image en fonction de ses dimensions originales.
    • `"auto_custom_max"` : HubSpot ajustera automatiquement la taille de l'image en fonction des dimensions maximales définies à l'aide des propriétés `"max_height"` et `"max_width"`.
    • `"exact":` HubSpot dimensionnera l'image en fonction des dimensions définies à l'aide des propriétés `"height"` et `"width"`.
  • `src` : l'URL de l'image par défaut. Doit être un chemin absolu vers une image.
  • `alt` : le texte alternatif par défaut de l'image.
  • `loading` : les [options de chargement asynchrone de l'image](/docs/cms/best-practices/testing-staging-performance/lazy-loading). Peut-être défini comme `"disabled"` (par défaut), `"eager"`, ou `"lazy"`.
| `{ "size_type" : "auto", "src" : "", "alt" : null, "loading": "disabled" }` | | `responsive` | Booléen | Permet de déterminer si l'image doit agir de manière réactive ou avoir une hauteur et une largeur fixes. | `true` | | `showLoading` | Booléen | Permet de déterminer si les commandes permettant de choisir le [chargement asynchrone de](/docs/cms/best-practices/testing-staging-performance/lazy-loading) l'image sont affichées dans l'éditeur de page. | `false` | ## Lien Les champs de liens offrent aux créateurs de contenu une interface intuitive pour fournir des liens vers des URL et des adresses e-mail. Pour les liens externes, les créateurs de contenu choisissent "external". Pour les liens d'e-mail, "email address". Enfin, pour le contenu hébergé sur le CMS HubSpot, ils peuvent utiliser "content", qui affiche une liste de toutes les pages et de tous les articles de blog du compte, "file", pour afficher les ressources du fichier, et "blog", pour afficher toutes les listes de blogs du compte. Les champs de liens sont très similaires aux champs d'URL. Ils offrent cependant une interface utilisateur pour « ouvrir dans une nouvelle fenêtre » et « indiquer aux moteurs de recherche de ne pas suivre ». Si vous ne voulez pas que les créateurs de contenu aient ce contrôle, utilisez le [champ URL](#url). Les champs de lien sont pris en charge dans les modules. ![champ de lien](https://cdn2.hubspot.net/hubfs/53/link%20field.png) **JSON** ```json theme={null} { "name": "link_field", "display_width": null, "label": "Link", "required": false, "locked": false, "supported_types": [ "EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG", "CALL_TO_ACTION", "PHONE_NUMBER", "WHATSAPP_NUMBER", "PAYMENT" ], "show_advanced_rel_options": true, "type": "link", "default": { "url": { "content_id": null, "type": "EXTERNAL", "href": "" }, "open_in_new_tab": false, "no_follow": false } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'URL par défaut et le comportement d'ouverture du lien. Cet objet comprend :
  • Un objet `url` qui contient :
    • `content_id` : s'il s'agit d'un lien vers du contenu HubSpot, l'ID de ce contenu. Définir sur `null` s'il s'agit de contenu externe.
    • `type` : le type d'URL. Découvrez-en davantage sur les types compatibles ci-dessous.
    • `href` : l'URL du contenu. Lors de l'association au contenu HubSpot, définissez ce champ sur `null` et utilisez `content_id` à la place.
| `{ "url" : { "content_id" : null, "type" : "EXTERNAL", "href" : "" }, "open_in_new_tab" : false, "no_follow" : false, "sponsored" : false, "user_generated_content" : false }` | | `supported_types` | Tableau | Les types de liens que les créateurs de contenu peuvent sélectionner. Supprimez de la liste les types que vous ne voulez pas que les créateurs de contenu puissent définir. Types valides possibles :
  • `EXTERNAL`
  • `CONTENT`
  • `FILE`
  • `EMAIL_ADDRESS`
  • `BLOG`
  • `CALL_TO_ACTION`
  • `PHONE_NUMBER`
  • `WHATSAPP_NUMBER`
  • `PAYMENT`
| `[ "EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG", "CALL_TO_ACTION", "PHONE_NUMBER", "WHATSAPP_NUMBER", "PAYMENT" ]` | | `show_advanced_rel_options` | Booléen | Par défaut, les créateurs de contenu pourront uniquement sélectionner l'option `no_follow`. Lorsque la valeur est définie sur `true`, les créateurs de contenu peuvent également sélectionner :
  • `sponsored` : un lien sponsorisé, tel qu'un lien publicitaire payant.
  • `user_generated_content` : contenu généré par les utilisateurs, tel que les forums.
En savoir plus sur [les attributs de lien](https://moz.com/blog/nofollow-sponsored-ugc). | `false` | **React** ```jsx theme={null} import { ModuleFields, LinkField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'URL par défaut et le comportement d'ouverture du lien. Cet objet comprend :
  • Un objet `url` qui contient :
    • `content_id` : s'il s'agit d'un lien vers du contenu HubSpot, l'ID de ce contenu. Définir sur `null` s'il s'agit de contenu externe.
    • `type` : le type d'URL. Découvrez-en davantage sur les types compatibles ci-dessous.
    • `href` : l'URL du contenu. Lors de l'association au contenu HubSpot, définissez ce champ sur `null` et utilisez `content_id` à la place.
| `{ "url" : { "content_id" : null, "type" : "EXTERNAL", "href" : "" }, "open_in_new_tab" : false, "no_follow" : false, "sponsored" : false, "user_generated_content" : false }` | | `supportedTypes` | Tableau | Les types de liens que les créateurs de contenu peuvent sélectionner. Supprimez de la liste les types que vous ne voulez pas que les créateurs de contenu puissent définir. Types valides possibles :
  • `EXTERNAL`
  • `CONTENT`
  • `FILE`
  • `EMAIL_ADDRESS`
  • `BLOG`
  • `CALL_TO_ACTION`
  • `PHONE_NUMBER`
  • `WHATSAPP_NUMBER`
  • `PAYMENT`
| `[ "EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG", "CALL_TO_ACTION", "PHONE_NUMBER", "WHATSAPP_NUMBER", "PAYMENT" ]` | | `showAdvancedRelOptions` | Booléen | Par défaut, les créateurs de contenu pourront uniquement sélectionner l'option `no_follow`. Lorsque la valeur est définie sur `true`, les créateurs de contenu peuvent également sélectionner :
  • `sponsored` : un lien sponsorisé, tel qu'un lien publicitaire payant.
  • `user_generated_content` : contenu généré par les utilisateurs, tel que les forums.
En savoir plus sur [les attributs de lien](https://moz.com/blog/nofollow-sponsored-ugc). | `false` | ## Logo Les champs de logo permettent aux créateurs de contenu de spécifier les images de logo à utiliser dans une page, le logo du domaine étant utilisé par défaut. Ceci est utile pour les en-têtes et pieds de page du site qui peuvent contenir le logo de l'entreprise. Les champs de logo permettent également un [chargement asynchrone](/docs/cms/best-practices/testing-staging-performance/lazy-loading). Les champs de logo sont pris en charge dans les modules. ![champ de logo](https://cdn2.hubspot.net/hubfs/53/logo%20field.png) **JSON** ```json theme={null} { "name": "logo", "label": "Logo", "required": false, "locked": false, "type": "logo", "show_loading": true, "default": { "override_inherited_src": false, "src": null, "alt": null, "loading": "lazy" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `show_loading` | Chaîne | Permet de déterminer si les commandes permettant de choisir le [chargement asynchrone de](/docs/cms/best-practices/testing-staging-performance/lazy-loading) l'image sont affichées dans l'éditeur de page. | `false` | | `default` | Objet | L'objet logo. Si `show_loading` est défini sur `true`, vous pouvez inclure une propriété `loading` pour définir les [options de chargement asynchrone de l'image](/docs/cms/best-practices/testing-staging-performance/lazy-loading). Les options comprennent :
  • `"disabled"` (par défaut)
  • `"eager"`
  • `"lazy"`
| `{ override_inherited_src: false, src: "", alt: null, width: null, height: null, loading: "disabled" suppress_company_name: false }` | **React** ```jsx theme={null} import { ModuleFields, LogoField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `showLoading` | Chaîne | Permet de déterminer si les commandes permettant de choisir le [chargement asynchrone de](/docs/cms/best-practices/testing-staging-performance/lazy-loading) l'image sont affichées dans l'éditeur de page. | `false` | | `default` | Objet | L'objet logo. Si `show_loading` est défini sur `true`, vous pouvez inclure une propriété `loading` pour définir les [options de chargement asynchrone de l'image](/docs/cms/best-practices/testing-staging-performance/lazy-loading). Les options comprennent :
  • `"disabled"` (par défaut)
  • `"eager"`
  • `"lazy"`
| `{ override_inherited_src: false, src: "", alt: null, width: null, height: null, loading: "disabled" suppress_company_name: false }` | ## Menu Les champs de menu offrent aux créateurs de contenu une interface intuitive pour créer, modifier et sélectionner un [menu de navigation](/docs/cms/start-building/building-blocks/modules/menus-and-navigation) réutilisable sur d'autres pages. Ce champ est idéal pour les menus utilisés sur plusieurs pages, comme la navigation principale, la navigation en bas de page et dans d'autres [contenus globaux](/docs/cms/start-building/building-blocks/global-content). Utilisez ce champ en tandem avec la [balise menu](/docs/cms/reference/hubl/tags/standard-tags#menu) ou la [fonction menu()](/docs/cms/reference/hubl/functions#menu), pour un rendu de menu à l'intérieur de votre module. Pour les menus qu'il n'est pas utile de réutiliser sur d'autres pages, comme un menu de table des matières, utilisez le [champ menu simple](#simple-menu). Les champs de menu sont pris en charge dans les modules. ![champ de menu](https://cdn2.hubspot.net/hubfs/53/menu%20field.png) **JSON** ```json theme={null} { "name": "menu", "label": "Menu", "required": false, "locked": false, "type": "menu", "default": 12345678911 } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Entier | L'[ID de menu](/docs/cms/start-building/building-blocks/modules/menus-and-navigation#get-your-menu-id) du menu. La valeur par défaut de `null`, correspond au menu par défaut sous la navigation. | `null` | **React** ```jsx theme={null} import { ModuleFields, MenuField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Entier | L'[ID de menu](/docs/cms/start-building/building-blocks/modules/menus-and-navigation#get-your-menu-id) du menu. La valeur par défaut de `null`, correspond au menu par défaut sous la navigation. | `null` | ## Nombre Les champs numériques offrent aux créateurs de contenu une interface intuitive pour saisir ou ajuster des valeurs numériques et des options. Cette fonction peut être utilisée pour créer des articles basés sur des pourcentages ou tout autre élément pour lequel des nombres sont nécessaires. Les champs numériques sont pris en charge dans les modules. Les champs numériques peuvent être utilisés comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ de nombre](https://cdn2.hubspot.net/hubfs/53/5Cdocs/number-field-example-4.jpg) **JSON** ```json theme={null} { "name": "number_field", "label": "Number", "required": false, "locked": false, "display": "slider", "min": 1, "max": 10, "step": 1, "type": "number", "prefix": "", "suffix": "", "default": null, "placeholder": "50" } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Nombre | Un nombre par défaut à utiliser. | `null` | | `prefix` | Chaîne | Ajouté comme préfixe au champ numérique. | | | `suffix` | Chaîne | Ajouté comme suffixe au champ du numéro. | | | `placeholder` | Chaîne | Permet d'ajouter une valeur de variable au champ. | | **React** ```jsx theme={null} import { ModuleFields, NumberField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Nombre | Un nombre par défaut à utiliser. | `null` | | `prefix` | Chaîne | Ajouté comme préfixe au champ numérique. | | | `suffix` | Chaîne | Ajouté comme suffixe au champ du numéro. | | | `placeholder` | Chaîne | Permet d'ajouter une valeur de variable au champ. | | > [!NOTE] > > Les paramètres suffixe et préfixe sont utilisés à des fins d'affichage dans l'éditeur de contenu et n'ont aucun effet sur la valeur numérique du champ. ## Page Les champs de page fournissent une interface permettant aux créateurs de contenu de sélectionner des pages du site et des pages de destination. La valeur renvoyée par un champ de page est l'identifiant de la page sélectionnée. Lorsqu'elle est utilisée en tandem avec les fonctions [content\_by\_id](/docs/cms/reference/hubl/functions#content-by-id) ou [content\_by\_ids](/docs/cms/reference/hubl/functions#content-by-ids), vous pouvez utiliser les données des pages sélectionnées dans la page actuelle. Les champs de page sont pris en charge dans les modules. ![Champ de page](https://www.hubspot.fr/hubfs/Page%20field.png) **JSON** ```json theme={null} { "name": "page_field", "label": "Page", "help_text": "Pulls data from the selected page.", "required": false, "locked": false, "placeholder": "Page to pull from", "type": "page", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Entier | Un identifiant de page par défaut à sélectionner. | `null` | **React** ```jsx theme={null} import { ModuleFields, PageField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Entier | Un identifiant de page par défaut à sélectionner. | `null` | ## Texte enrichi Les champs de texte enrichi offrent aux créateurs de contenu une expérience d'éditeur de texte WYSIWYG. Lorsque la valeur d'un champ de texte enrichi est imprimée, elle l'est au format HTML. Lorsque vous ne souhaitez pas que les créateurs de contenu disposent des droits de mise en forme, utilisez des [champs de texte](#text). Les champs de texte enrichi sont pris en charge dans les modules. ![Champ de texte enrichi](https://f.hubspotusercontent00.net/hubfs/53/Rich%20Text%20field.png) **JSON** ```json theme={null} { "name": "description", "label": "Description", "required": false, "locked": false, "type": "richtext", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | La chaîne de contenu à afficher prend en charge le HTML. Remarque : vous ne pouvez pas utiliser la [fonction](/docs/cms/reference/hubl/functions#get-asset-url) `get_asset_url` dans cette propriété par défaut. | `""` | | `enabled_features` | Tableau | Un ensemble d'éléments qui vous permet de [configurer la barre d'outils de l'éditeur de texte enrichi](/docs/cms/reference/fields/rich-text-editor) et les options disponibles pour les éditeurs de contenu. | | **React** ```jsx theme={null} import { ModuleFields, RichTextField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | La chaîne de contenu à afficher prend en charge le HTML. Remarque : vous ne pouvez pas utiliser la [fonction](/docs/cms/reference/hubl/functions#get-asset-url) `get_asset_url` dans cette propriété par défaut. | `""` | | `enabledFeatures` | Tableau | Un ensemble d'éléments qui vous permet de [configurer la barre d'outils de l'éditeur de texte enrichi](/docs/cms/reference/fields/rich-text-editor) et les options disponibles pour les éditeurs de contenu. | | ## Menu simple Les champs de menu simple offrent aux créateurs de contenu une interface intuitive pour créer un [menu de navigation](/docs/cms/start-building/building-blocks/modules/menus-and-navigation) qui n'est pas réutilisable sur d'autres pages. Pour les menus qui doivent être réutilisables, utilisez le [champ de menu](#menu). Cela peut être utile pour un menu de table des matières qui renvoie vers des titres de pages très longues, ou pour une liste de liens vers du contenu qui ne fait sens que sur la page en cours. Les champs de menu simple sont pris en charge dans les modules. ![Champ de menu simple](https://cdn2.hubspot.net/hubfs/53/Screen%20Shot%202020-02-28%20at%207.33.17%20AM.png) **JSON** ```json theme={null} { "name": "toc_menu", "label": "Table of Contents", "required": false, "locked": false, "type": "simplemenu", "default": [ { "isPublished": false, "pageLinkId": null, "pageLinkName": null, "isDeleted": null, "categoryId": null, "subCategory": null, "contentType": null, "state": null, "linkLabel": "Why is product marketing important?", "linkUrl": null, "linkParams": null, "linkTarget": null, "type": "NO_LINK", "children": [ { "isPublished": false, "pageLinkId": null, "pageLinkName": null, "isDeleted": null, "categoryId": null, "subCategory": null, "contentType": null, "state": null, "linkLabel": "Product Marketing Responsibilities", "linkUrl": "#product-marketing-responsibilities", "linkParams": null, "linkTarget": null, "type": "URL_LINK", "children": [] }, { "isPublished": false, "pageLinkId": null, "pageLinkName": null, "isDeleted": null, "categoryId": null, "subCategory": null, "contentType": null, "state": null, "linkLabel": "1. Identify the buyer personas and target audience for your product.", "linkUrl": "#step1", "linkParams": null, "linkTarget": null, "type": "URL_LINK", "children": [] }, { "isPublished": false, "pageLinkId": null, "pageLinkName": null, "isDeleted": null, "categoryId": null, "subCategory": null, "contentType": null, "state": null, "linkLabel": "2. Successfully create, manage and carry out your product marketing strategy.", "linkUrl": "#step2", "linkParams": null, "linkTarget": null, "type": "URL_LINK", "children": [] } ] }, { "isPublished": false, "pageLinkId": null, "pageLinkName": null, "isDeleted": null, "categoryId": null, "subCategory": null, "contentType": null, "state": null, "linkLabel": "How HubSpot can help", "linkUrl": "https://hubspot.com", "linkParams": null, "linkTarget": null, "type": "URL_LINK", "children": [] } ] } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Tableau d'objets | La structure JSON pour le menu et les enfants du menu. | `[]` | **React** ```jsx theme={null} import { ModuleFields, SimpleMenuField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Tableau d'objets | La structure JSON pour le menu et les enfants du menu. | `[]` | ## Espacement Ce champ fournit une interface utilisateur (IU) permettant aux créateurs de contenu de définir le remplissage et la marge. Les champs d'espacement ont une propriété `.css` qui renvoie une CSS basée sur la valeur du champ. [Découvrez-en davantage sur la propriété CSS générée.](https://developers.hubspot.fr/docs/cms/reference/fields/overview#generated-css) Les champs d'espacement sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview). Les champs d'espacement ne peuvent être utilisés que comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![capture d'écran du champ de style d'espacement développé dans l'éditeur de page](https://www.hubspot.com/hs-fs/hubfs/spacing%20style%20field%20expanded.png?width=320\&quality=low) **JSON** ```json theme={null} { "name": "img_spacing", "label": "Spacing around image", "required": false, "type": "spacing", "limits": { "padding": { "top": { "max": 50, "min": 25, "units": ["px", "pt", "em"] }, "left": { "max": 50, "units": ["px", "pt", "em"] }, "bottom": { "max": 50, "units": ["px", "pt", "em"] } }, "margin": { "top": { "max": 50, "min": 25, "units": ["px", "pt", "em"] }, "bottom": { "max": 25, "units": ["Q", "rem", "em"] } } }, "default": { "padding": { "top": { "value": 57, "units": "px" }, "bottom": { "value": 57, "units": "px" }, "left": { "value": 57, "units": "px" }, "right": { "value": 57, "units": "px" } }, "margin": { "top": { "value": 20, "units": "px" }, "bottom": { "value": 20, "units": "px" } } } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir les valeurs d'espacement par défaut. Contient les objets `padding` et `margin` :
  • `padding` : peut contenir les objets `top`, `right`, `bottom`, `left`
  • `margin` : peut contenir les objets `top` et `bottom`
Utilisez `units` pour définir les unités qu'un créateur de contenu peut utiliser dans HubSpot. Découvrez-en davantage sur les unités ci-dessous. | `{}` | | `limits` | Objet | Permet de définir les directives pour l'espacement `min` et `max`. Contient les objets `padding` et `margin` :
  • `padding` : peut contenir les objets `top`, `right`, `bottom`, `left`
  • `margin` : peut contenir les objets `top` et `bottom`
Utilisez `units` pour définir les unités qu'un créateur de contenu peut utiliser dans HubSpot. Découvrez-en davantage sur les unités ci-dessous. | | **React** ```jsx theme={null} import { ModuleFields, SpacingField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Permet de définir les valeurs d'espacement par défaut. Contient les objets `padding` et `margin` :
  • `padding` : peut contenir les objets `top`, `right`, `bottom`, `left`
  • `margin` : peut contenir les objets `top` et `bottom`
Utilisez `units` pour définir les unités qu'un créateur de contenu peut utiliser dans HubSpot. Découvrez-en davantage sur les unités ci-dessous. | `{}` | | `limits` | Objet | Permet de définir les directives pour l'espacement `min` et `max`. Contient les objets `padding` et `margin` :
  • `padding` : peut contenir les objets `top`, `right`, `bottom`, `left`
  • `margin` : peut contenir les objets `top` et `bottom`
Utilisez `units` pour définir les unités qu'un créateur de contenu peut utiliser dans HubSpot. Découvrez-en davantage sur les unités ci-dessous. | | Lorsque vous utilisez le champ d'espacement, veuillez prendre note de ce qui suit : * Vous devez inclure une liste `units` lors de la définition de `min` ou `max`. * La propriété `units` prend en charge les types d'unité suivants : `%`, `ch`, `em`, `ex`, `in`, `lh`, `pc`, `pt`, `px`, `Q`, `rem`, `vh`, `vmax`, `vmin` et `vw`. * Lorsqu'un créateur de contenu modifie en masse tous les éléments de remplissage, HubSpot utilise la valeur la plus élevée `min` et la valeur la plus faible `max`. En outre, seules les unités partagées par tous les éléments seront disponibles pour le créateur de contenu. ## Balise Les champs de balise fournissent un sélecteur de balises de blog pour les créateurs de contenu. Ce sélecteur de balise renvoie un identifiant de balise de blog qui peut ensuite être utilisé dans les fonctions liées aux balises de blog telles que [URL Balise de blog](/docs/cms/reference/hubl/functions#blog-tag-url) et [Articles Balise de blog récente](/docs/cms/reference/hubl/functions#blog-recent-tag-posts). Les champs de balise sont pris en charge dans les modules. ![champ de balise](https://cdn2.hubspot.net/hubfs/53/tag%20field.png) **JSON** ```json theme={null} { "id": "c3395cd3-8e60-7e47-2f1b-b7ccf4d669c9", "name": "blog_tag", "label": "Blog Tag", "required": false, "locked": false, "tag_value": "SLUG", "type": "tag", "default": null } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | ID de la balise. | `null` | | `tag_value` | Chaîne | La valeur de sortie. Peut être l'un des objets suivants :
  • `ALL` : un objet contenant le nom, l'ID unique et le slug d'URL de la balise.
  • `ID` : l'identifiant unique de la balise.
  • `NAME` : le nom de la balise.
  • `SLUG` : le slug d'URL de la balise.
| `SLUG` | **React** ```jsx theme={null} import { ModuleFields, TagField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | ID de la balise. | `null` | | `tagValue` | Chaîne | La valeur de sortie. Peut être l'un des objets suivants :
  • `ALL` : un objet contenant le nom, l'ID unique et le slug d'URL de la balise.
  • `ID` : l'identifiant unique de la balise.
  • `NAME` : le nom de la balise.
  • `SLUG` : le slug d'URL de la balise.
| `SLUG` | ## Texte Les champs de texte offrent aux créateurs de contenu une expérience d'édition de texte simple, sans fonctionnalité de texte enrichi. Les champs de texte s'affichent initialement sur une seule ligne, mais ils peuvent se transformer en zones de texte et prendre en charge plusieurs lignes. Utilisez-les lorsque vous ne voulez pas que les créateurs de contenu contrôlent la mise en forme. Si vous souhaitez autoriser le contrôle de mise en forme, utilisez des [champs de texte enrichi](#rich-text). Les champs de texte sont pris en charge dans les modules. ![champ de texte](https://cdn2.hubspot.net/hubfs/53/text%20field.png) **JSON** ```json theme={null} { "name": "product_name", "label": "Product Name", "required": false, "locked": false, "validation_regex": "", "allow_new_line": false, "show_emoji_picker": false, "type": "text", "default": "" } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | La chaîne de texte. | `""` | **React** ```jsx theme={null} import { ModuleFields, TextField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Chaîne | La chaîne de texte. | `""` | ## Alignement du texte Cette zone permet aux créateurs de contenu d'aligner le contenu du texte dans un conteneur. Ce champ ne doit pas être utilisé pour aligner d'autres ressources, car il existe un [type de champ spécifique pour cela](#alignment). Les champs d'alignement du texte sont pris en charge dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview). Les champs d'alignement du texte ne peuvent être utilisés que comme [champs de style](https://developers.hubspot.fr/docs/cms/reference/fields/overview#style-fields). ![Champ d'alignement du texte](https://www.hubspot.fr/hubfs/Text%20Alignment%20field.png) **JSON** ```json theme={null} { "name": "heading_align", "label": "Heading alignment", "required": false, "type": "textalignment", "default": { "text_align": "LEFT" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant `horizontal_align` et `vertical_align`. | | | `alignment_direction` | Chaîne | Permet de déterminer si seuls les contrôles d'alignement horizontal, vertical ou les deux doivent être affichés. Peut-être :
  • `HORIZONTAL`
  • `VERTICAL`
  • `BOTH`
| `BOTH` | **React** ```jsx theme={null} import { ModuleFields, TextAlignmentField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet contenant `horizontal_align` et `vertical_align`. | | | `alignmentDirection` | Chaîne | Permet de déterminer si seuls les contrôles d'alignement horizontal, vertical ou les deux doivent être affichés. Peut-être :
  • `HORIZONTAL`
  • `VERTICAL`
  • `BOTH`
| `BOTH` | ## URL Les champs d'URL offrent une expérience similaire à celle des champs de liens. Fournir une interface utilisateur permettant aux créateurs de contenu d'ajouter des liens. Les champs d'URL, cependant, n'affichent pas d'interface utilisateur pour ouvrir dans une nouvelle fenêtre, ni ne disent aux moteurs de recherche de ne pas suivre. Utilisez ce champ lorsque vous voulez, en tant que développeur, dicter les valeurs de ce champ. Si vous voulez que l'utilisateur ait le contrôle, utilisez plutôt des [champs de lien](#link). Les champs d'URL sont pris en charge dans les modules. ![Champ d'URL](https://cdn2.hubspot.net/hubfs/53/URL%20field.png) **JSON** ```json theme={null} { "name": "url", "label": "URL", "required": false, "locked": false, "supported_types": ["EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG", "PHONE_NUMBER", "WHATSAPP_NUMBER"], "type": "url", "default": { "content_id": null, "href": "http://example.com", "type": "EXTERNAL" } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Un objet URL, avec type, href et id de contenu (si le contenu est une page ou un article sur HubSpot) | `{ "content_id" : null, "href" : "", "type" : "EXTERNAL" }` | | `supported_types` | Tableau | La liste des types de liens que ce champ permet aux créateurs de contenu de sélectionner. Supprimez de la liste les types que vous ne voulez pas que les créateurs de contenu puissent définir. Les types incluent :
  • `EXTERNAL` : permet de restituer un champ de saisie de texte pour une URL externe.
  • `CONTENT` : permet de restituer un menu déroulant contenant le site web et les pages de destination du compte.
  • `FILE` : permet de restituer un sélecteur de fichier.
  • `EMAIL_ADDRESS` : permet de restituer un champ de saisie de texte pour une adresse e-mail.
  • `BLOG` : permet de restituer un menu déroulant contenant les pages de listing de blog du compte.
  • `PHONE_NUMBER` : permet de restituer un champ de saisie de texte pour un numéro de téléphone. Le numéro doit commencer par `+` et contenir de 7 à 15 chiffres (à l'exclusion du code pays).
  • `WHATSAPP_NUMBER` : permet de restituer un menu déroulant contenant les [numéros WhatsApp connectés au compte](https://knowledge.hubspot.com/fr/inbox/connect-whatsapp-to-the-conversations-inbox).
| `[ "EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG" ]` | **React** ```jsx theme={null} import { ModuleFields, UrlField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | Un objet URL, avec type, href et id de contenu (si le contenu est une page ou un article sur HubSpot) | `{ "content_id" : null, "href" : "", "type" : "EXTERNAL" }` | | `supportedTypes` | Tableau | La liste des types de liens que ce champ permet aux créateurs de contenu de sélectionner. Supprimez de la liste les types que vous ne voulez pas que les créateurs de contenu puissent définir. Les types incluent :
  • `EXTERNAL` : permet de restituer un champ de saisie de texte pour une URL externe.
  • `CONTENT` : permet de restituer un menu déroulant contenant le site web et les pages de destination du compte.
  • `FILE` : permet de restituer un sélecteur de fichier.
  • `EMAIL_ADDRESS` : permet de restituer un champ de saisie de texte pour une adresse e-mail.
  • `BLOG` : permet de restituer un menu déroulant contenant les pages de listing de blog du compte.
  • `PHONE_NUMBER` : permet de restituer un champ de saisie de texte pour un numéro de téléphone. Le numéro doit commencer par `+` et contenir de 7 à 15 chiffres (à l'exclusion du code pays).
  • `WHATSAPP_NUMBER` : permet de restituer un menu déroulant contenant les [numéros WhatsApp connectés au compte](https://knowledge.hubspot.com/fr/inbox/connect-whatsapp-to-the-conversations-inbox).
| `[ "EXTERNAL", "CONTENT", "FILE", "EMAIL_ADDRESS", "BLOG" ]` | ## Vidéos Les champs de vidéo permettent aux éditeurs de contenu d'ajouter HubSpot Vidéo au contenu de leurs modules sans avoir à utiliser des champs de texte enrichi. ![Champ de vidéo](https://f.hubspotusercontent00.net/hubfs/53/Developer%20Site/assets/images/module-theme-fields/video-field.png) **JSON** ```json theme={null} { "id": "ca4a319e-5b58-422e-47ac-49ce1b51b507", "name": "videoplayer_field", "label": "Video", "required": false, "locked": false, "type": "videoplayer", "show_advanced_options": false, "default": { "player_id": 32173842991, "height": 1224, "width": 1872, "conversion_asset": { "type": "CTA", "id": "c3e4fa03-2c69-461d-b9af-22b2fde86bc7", "position": "POST" }, "loop_video": false, "mute_by_default": false, "autoplay": false, "hide_control": false } } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet vidéo avec des paramètres pour `player_id`, `height`, `width`, `size_type`, `conversion_asset`, `loop_video`, `mute_by_default`, `autoplay` et `hide_control`. | `[]` | | `show_advanced_options` | Booléen | Si les créateurs de contenu peuvent voir les options avancées par défaut. | `false` | **React** ```jsx theme={null} import { ModuleFields, VideoField } from "@hubspot/cms-components/fields"; ``` | Propriété | Type | Description | Par défaut | | - | - | - | - | | `default` | Objet | L'objet vidéo avec des paramètres pour `player_id`, `height`, `width`, `size_type`, `conversion_asset`, `loop_video`, `mute_by_default`, `autoplay` et `hide_control`. | `[]` | | `showAdvancedOptions` | Booléen | Si les créateurs de contenu peuvent voir les options avancées par défaut. | `false` | ### conversion\_asset paramètres de l'objet | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `type` | Chaîne | Permet d'accepter soit `"FORM"`, `"CTA"`, ou `""` | `""` | | `id` | Chaîne | L'identifiant du formulaire ou du type de call-to-action | `""` | | `position` | Chaîne | Si la ressource de conversion doit être affichée avant le début de la vidéo ou après sa fin. Accepte soit « PRE » soit « POST ». | `""` | ``` ``` # Présentation des modules et des champs de thème Source: https://developers.hubspot.fr/docs/cms/reference/fields/overview Les modules et les thèmes HubSpot prennent en charge la personnalisation par les créateurs de contenu grâce à des champs. Les développeurs créent et organisent les champs via un fichier fields.json. Dans les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview) et les [thèmes](/docs/cms/start-building/building-blocks/overview), les champs sont utilisés pour permettre aux créateurs de contenu de contrôler le style et les fonctionnalités des modules ainsi que des thèmes sur votre site web. Lorsque vous développez un module ou un thème, vous incluez des champs dans un fichier `fields.json`, qui sera ensuite traduit vers les éditeurs de thème et de contenu. ![theme-settings-fields](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/theme-settings-fields.png) Découvrez ci-dessous comment créer et gérer des options pour les champs de module et de thème. Pour en savoir plus sur les types de champs spécifiques, consultez le [guide de référence sur les types de modules et de champs](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields). ## Créer et modifier des champs Vous pouvez ajouter des champs au fichier `fields.json` d'un [module](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview) localement par le biais du [ILC HubSpot](/docs/developer-tooling/local-development/hubspot-cli/reference) et dans l'éditeur de module présent dans l'application. Pour ajouter des champs à un [thème](/docs/cms/start-building/building-blocks/overview), vous devez mettre à jour le fichier `fields.json` du thème en utilisant l'ILC. ### ILC HubSpot Lors du [développement local d'un](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) module ou d'un thème, les champs peuvent être modifiés par le biais d'un fichier `fields.json` situé dans le dossier du module ou du thème. Pour les modules, ce fichier est automatiquement créé lors de l'utilisation de la commande [`hs create module`](/docs/developer-tooling/local-development/hubspot-cli/reference). Toutes les options de champ disponibles dans l'éditeur de module sont disponibles sous forme de propriétés que vous pouvez ajouter ou modifier dans le fichier `fields.json`. Cela comprend les champs, les groupes et les conditions des répéteurs. L'un des avantages de l'édition locale est qu'elle facilite l'[inclusion de vos modules dans les systèmes de contrôle de version tels que git](/docs/cms/start-building/introduction/developer-environment/github-integration). ### Éditeur de module Le [gestionnaire de conception](/docs/cms/start-building/introduction/developer-environment/design-manager) dispose d'une interface utilisateur intégrée dédiée à l'éditeur de module qui vous permet de [créer](https://knowledge.hubspot.com/fr/design-manager/create-and-edit-modules), de regrouper et de [modifier les](https://knowledge.hubspot.com/fr/design-manager/create-and-edit-modules) champs de module. L'éditeur de module contient un aperçu du module qui vous permet de visualiser le module seul, ainsi que de tester ses champs. Vous devez toujours tester les modules sur un modèle que vous prévoyez d'utiliser afin de voir quels styles de modèles peuvent les affecter. Attention : si un module est contenu dans un dossier verrouillé, il ne peut pas être modifié de cette façon. ![Éditeur de modules du gestionnaire de conception](https://cdn2.hubspot.net/hubfs/53/Module%20Editor-1-1.png) > [!WARNING] > > **Remarque :** si vous travaillez principalement en local, mais que vous souhaitez utiliser l'éditeur de module pour configurer les champs, veillez à [récupérer](/docs/developer-tooling/local-development/hubspot-cli/reference#fetch) vos modifications. Ceci est particulièrement important pour les personnes utilisant des systèmes de contrôle de version tels que git. ## Champs côte à côte Par défaut, les champs de module des éditeurs de contenu s'empilent verticalement. Toutefois, vous pouvez placer des champs de module côte à côte en ajoutant la propriété `display_width` aux champs dans le fichier `fields.json` avec la valeur `half_width`. ![side-by-side-modules0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/side-by-side-modules0.png) Un champ unique avec un `display_width` de `half_width` apparaîtra en demi-largeur dans l'éditeur de contenu. Lorsque le champ situé au-dessus ou en dessous de ce champ dans le fichier `fields.json` est défini sur `half_width`, ils sont placés côte à côte. ```json theme={null} // Example module fields.json file [ { "name": "number_field", "label": "Number", "required": false, "locked": false, "display": "slider", "min": 1, "max": 10, "step": 1, "type": "number", "prefix": "", "suffix": "", "default": null, "display_width": "half_width" }, { "label": "Description", "name": "description", "type": "text", "required": true, "default": "Add a description", "display_width": "half_width" } ] ``` ## Groupes de champs Lorsque les champs sont liés les uns aux autres, il est souvent judicieux de les regrouper visuellement. Pour ce faire, vous pouvez créer des groupes de champs, qui sont pris en charge à la fois dans les modules et les thèmes. Pour créer un groupe de champs localement, créez un objet dans `fields.json` avec l'élément `type` de `"group"`. Ensuite, incluez un tableau `children` pour contenir les champs que vous souhaitez regrouper. ![simple-field-group-example](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/field-group-example-expanded-burrata.png) ```json theme={null} [ { "id": "9c00985f-01db-ac5d-73f5-80ed6c0c7863", "name": "my_text", "display_width": null, "label": "Text", "required": true, "locked": false, "validation_regex": "", "allow_new_line": false, "show_emoji_picker": false, "type": "text", "default": "Add text here" }, { "type": "group", "name": "recipe_summary_group", "label": "Recipe summary", "expanded": true, "inline_help_text": "Summarize the recipe (title and description)", "children": [ { "type": "text", "label": "Recipe title", "name": "recipe_title", "placeholder": "Burrata salad" }, { "type": "text", "label": "Recipe description", "name": "recipe_description", "placeholder": "fig mostarda, hazelnuts, arugula, vincotto, prosciutto, toasted sourdough" } ] } ] ``` Vous pouvez créer des groupes de champs supplémentaires à l'intérieur d'un groupe en ajoutant un autre type d'objet `"group"` dans le premier paramètre `children`. Ensuite, construisez le groupe de champs de la même manière que ci-dessus, en utilisant `children` pour contenir les champs. Vous pouvez imbriquer des groupes de champs jusqu'à une profondeur de trois. ![field-group-with-secondary-grouping](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/field-group-example-secondary-group.png) ```json theme={null} [ { "type": "group", "name": "recipe_summary_group", "label": "Recipe summary", "inline_help_text": "Summarize the recipe (title and description)", "display": "inline", "children": [ { "type": "text", "label": "Recipe title", "name": "recipe_title", "placeholder": "Burrata salad" }, { "type": "text", "label": "Recipe description", "name": "recipe_description", "placeholder": "fig mostarda, hazelnuts, arugula, vincotto, prosciutto, toasted sourdough" }, { "type": "group", "name": "secondary_group", "label": "Secondary group", "expanded": false, "children": [ { "name": "bg_color", "label": "Background color", "sortable": false, "required": false, "locked": false, "type": "color", "default": { "color": "#ff0000", "opacity": 100 } } ] } ] } ] ``` #### Options d'affichage du groupe de champs Vous pouvez personnaliser le comportement d'affichage des groupes de champs suivant : * **Expansion :** par défaut, les groupes de champs s'affichent réduits dans l'éditeur. Les groupes qui contiennent des groupes imbriqués s'affichent sous forme de boutons d'exploration qui ouvrent le groupe dans sa propre vue, le groupe situé le plus à l'intérieur affichant des séparateurs. ![default-collapsed-group](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/field-group-collapsed-default.png) * **Type d'affichage :** par défaut, les groupes qui ne contiennent pas de groupes imbriqués s'afficheront sous forme de sections réductibles avec des séparateurs visuels autour de leurs enfants. Les groupes qui contiennent des groupes imbriqués s'affichent sous forme de boutons d'exploration qui ouvrent le groupe dans sa propre vue, le groupe situé le plus à l'intérieur affichant des séparateurs. * **Icône du groupe :** si vous le souhaitez, vous pouvez inclure une icône Font Awesome qui s'affiche à gauche de l'étiquette. ![icon-example](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/field-group-icon-example.png) ```json theme={null} [ { "type": "group", "name": "recipe_summary_group", "label": "Recipe summary", "display": "drilldown", "inline_help_text": "Summarize the recipe (title and description)", "icon": { "name": "star", "set": "fontawesome-5.14.0", "type": "SOLID" }, "children": [ { "type": "text", "label": "Recipe title", "name": "recipe_title", "placeholder": "Burrata salad" }, { "type": "text", "label": "Recipe description", "name": "recipe_description", "placeholder": "fig mostarda, hazelnuts, arugula, vincotto, prosciutto, toasted sourdough" } ] } ] ``` | Paramètre | Type | Description | | - | - | - | | `display` | String | Le style d'affichage du groupe de champs. Peut être l'un des suivants :
  • `drilldown` : affiche le groupe réduit avec un bouton permettant d'ouvrir les enfants du groupe dans son propre panneau. Il s'agit de l'affichage par défaut pour les groupes qui contiennent des groupes imbriqués.
  • `accordion` : affiche le groupe réduit avec un bouton permettant de développer les enfants du groupe ci-dessous sous forme de section extensible. Il s'agit de l'affichage par défaut pour les groupes sans groupes imbriqués.
  • `inline` : affiche le groupe et ses enfants en ligne sans option permettant de réduire le groupe.
| | `icon` | Objet | Ajoute une icône à gauche du libellé. Contient les paramètres suivants :
  • `name` : l'identifiant de l'icône Font Awesome.
  • `set` : l'[ensemble d'icônes](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#icon) Font Awesome.
  • `type` : style d'icône (par exemple, `SOLID`, `REGULAR`).
| | `expanded` | Booléen | indique si le groupe de champs est développé par défaut. | #### Sortir des valeurs des champs dans les groupes de champs Les groupes de champs créent des dict. qui contiennent les valeurs des champs que vous souhaitez éditer. Si vous imbriquez des groupes de champs, le groupe de champs imbriqué devient un dict. à l'intérieur du dict. du groupe de champs extérieur. Pour accéder à ces données, vous parcourez l'arborescence à partir du thème racine ou de la variable du module, selon le contexte. ```html example.html theme={null}
{# printing a value from a field group `recipe_summary` is the field group, `title` is the text field. #} {{module.recipe_summary.title}}
``` ```css example.css theme={null} /* Printing a Font field's color value, when the font field is within a field group. `typography` is the field group, `h1_font` is the field */ h1{ color: {{ theme.typography.h1_font.color }}; } ``` #### Éléments phares dans le groupe de champs imbriqués Dans les cas où un groupe de champs est répété, vous pouvez spécifier une ou plusieurs de ces occurrences en tant qu'éléments phares, ce qui vous permet de styliser l'élément séparément pour le faire ressortir. Par exemple, cela peut être particulièrement utile pour une page produit où vous pouvez avoir un produit phare que vous souhaitez mettre en avant. Vous pouvez spécifier un nombre maximum d'éléments phares par groupe de champs. Dans l'éditeur, les créateurs de contenu peuvent ensuite marquer les éléments comme phares selon leurs besoins. ![cms-field-group-featured-in-app (1)](https://knowledge.hubspot.com/hubfs/Knowledge_Base_2023_2024/cms-field-group-featured-in-app%20\(1\).png) Pour activer les éléments phares dans un groupe de champs, incluez la propriété `group_occurrence_meta` dans la configuration du groupe de champs. Cette propriété contient les propriétés suivantes : * `featured_enabled` : défini sur `true` pour activer les éléments phares. * `featured_limit` : le nombre maximum d'éléments phares à autoriser. Le groupe de champs doit également inclure la propriété `occurrence`. ```json theme={null} // Field group example { "label": "Card", "name": "card", "type": "group", "occurrence": { "default": 2, "min": 1, "sorting_label_field": "card.title" }, "group_occurrence_meta": { "featured_enabled": true, "featured_limit": 3 }, "children": [ { "label": "Image", "name": "image", "type": "image", "responsive": true, "resizable": true, "show_loading": true, "default": { "loading": "lazy" } }, { "label": "Content", "name": "text", "type": "richtext", "enabled_features": [ "advanced_emphasis", "alignment", "block", "emoji", "font_family", "font_size", "lists", "standard_emphasis" ], "default": "

This is a title

Contextual advertising can be profitable. It can either pay for your hosting and maintenance costs for you website or it can pay for a lot more.

" } ], "default": [ { "image": { "loading": "lazy" }, "text": "

This is a title

Contextual advertising can be profitable. It can either pay for your hosting and maintenance costs for you website or it can pay for a lot more.

" }, { "image": { "loading": "lazy" }, "text": "

This is a title

Contextual advertising can be profitable. It can either pay for your hosting and maintenance costs for you website or it can pay for a lot more.

" } ] } ``` Pour vérifier si un élément d'un groupe répété est présenté, vous pouvez interroger la propriété `hs_meta`. Le code ci-dessous utilise une [boucle for](https://developers.hubspot.fr/docs/cms/reference/hubl/loops) pour vérifier les éléments de groupe de champs qui sont définis comme phares, puis affiche le titre de chacun sous forme d'en-tête `h3`. `{{ repeated_group_item.hs_meta.occurrence.featured }}` ```hubl theme={null}

Check out this week's featured items:

{% for item in module.card %} {% if item.hs_meta.occurrence.featured %}

{{item.title}}

{% endif %} {% endfor %}
``` ## Champs de style Les champs de style sont un type de groupe de champs spécifique dans le fichier `fields.json` d'un module ou d'un thème. Celui-ci permet aux créateurs de contenu de contrôler le style d'un module ou d'un thème dans l'éditeur de page et de thème. Découvrez ci-dessous comment ajouter des champs de style à un module ou à un thème. Découvrez les [meilleures pratiques pour utiliser et organiser les champs de style](https://developers.hubspot.fr/docs/cms/best-practices/fields). ### Champs de style du module Les champs de style ajoutés à un module apparaissent dans l'onglet *Styles* de l'éditeur de page lors de l'édition du module : ![style-field-module-editor0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/style-field-module-editor0.png) Lorsque vous ajoutez des champs de style au fichier `fields.json` d'un module, vous les ajoutez dans un groupe de styles. Ce groupe, cependant, peut contenir plusieurs groupes en son sein, comme indiqué ci-dessous : ```json theme={null} // Module style fields [ { "type": "group", "name": "styles", "tab": "STYLE", "children": [ { "name": "img_spacing", "label": "Spacing around image", "required": false, "type": "spacing", "default": { "padding": { "top": { "value": 10, "units": "px" }, "bottom": { "value": 10, "units": "px" }, "left": { "value": 10, "units": "px" }, "right": { "value": 10, "units": "px" } }, "margin": { "top": { "value": 10, "units": "px" }, "bottom": { "value": 10, "units": "px" } } } } ] } ] ``` Les champs suivants peuvent être utilisés comme champs de style dans les modules. Découvrez chacun des types de champs dans le [module et le guide des types de champs](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields). * [Alignement](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#alignment) * [Dégradé](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#gradient) * [Espacement](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#spacing) * [Image d'arrière-plan](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#background-image) * [Bordure](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#border) * [Booléen](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#boolean) * [Choix](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#choice) * [Nombre](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#number) * [Couleur](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#color) * [Icône](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#icon) * [Image](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#image) * [Police](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#font) * [Alignement du texte](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#text-alignment) Découvrez-en davantage sur les [types de champs de modules et de thèmes](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields). Consultez le [boilerplate du CMS](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/modules/card.module/fields.json) pour obtenir un exemple de champs de style dans le fichier `fields.json` d'un module. ### Champs de style de thème Les champs de style ajoutés à un thème apparaissent dans la barre latérale gauche de l'éditeur de thème : ![style-field-theme-editor0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/style-field-theme-editor0.png) Tous les champs de style contenus dans le fichier `fields.json` d'un thème seront ajoutés à la barre latérale gauche de l'éditeur de thème. Il n'est pas nécessaire de les placer dans un groupe de styles, comme illustré ci-dessous : ```json theme={null} // Theme style fields [ { "label": "Global colors", "name": "global_colors", "type": "group", "children": [ { "label": "Primary", "name": "primary", "type": "color", "visibility": { "hidden_subfields": { "opacity": true } }, "default": { "color": "#494A52" } }, { "label": "Secondary", "name": "secondary", "type": "color", "visibility": { "hidden_subfields": { "opacity": true } }, "default": { "color": "#F8FAFC" } } ] }, { "label": "Global fonts", "name": "global_fonts", "type": "group", "children": [ { "label": "Primary", "name": "primary", "type": "font", "visibility": { "hidden_subfields": { "size": true, "styles": true } }, "inherited_value": { "property_value_paths": { "color": "theme.global_colors.primary.color" } }, "default": { "fallback": "sans-serif", "font": "Lato", "font_set": "GOOGLE" } }, { "label": "Secondary", "name": "secondary", "type": "font", "visibility": { "hidden_subfields": { "size": true, "styles": true } }, "inherited_value": { "property_value_paths": { "color": "theme.global_colors.primary.color" } }, "default": { "fallback": "serif", "font": "Merriweather", "font_set": "GOOGLE" } } ] }, { "name": "branding_color", "label": "branding_color", "type": "color", "default": { "color": "#3b7bc0", "opacity": 60 }, "inherited_value": { "property_value_paths": { "color": "brand_settings.primaryColor" } } }, { "name": "secondary_branding_color", "label": "Secondary Branding color", "type": "color", "default": { "color": "#ff6b6b", "opacity": 60 }, "inherited_value": { "property_value_paths": { "color": "brand_settings.colors[2]" } } } ] } ] ``` Les champs suivants peuvent être utilisés comme champs de style dans les thèmes. Découvrez chacun des types de champs dans le [module et le guide des types de champs](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields). * [Booléen](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#boolean) * [Bordure](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#border) * [Choix](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#choice) * [Couleur](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#color) * [Police](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#font) * [Image](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#image) * [Nombre](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#number) * [Espacement](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#spacing) Découvrez-en davantage sur les [types de champs de modules et de thèmes](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields). Consultez le [boilerplate du CMS](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/fields.json) pour obtenir un exemple de champs de style dans le fichier `fields.json` d'un thème. > [!WARNING] > > **Remarque :** Si vous êtes un fournisseur du marketplace, vous ne devez pas remplacer les champs de contenu existants par des champs de style dans les modules existants. La modification de la hiérarchie des champs dans un fichier `fields.json` peut entraîner la perte des données des instances de module existantes. Ajoutez de nouveaux champs de style ou créez une nouvelle liste dans laquelle les champs sont regroupés de manière appropriée. Cela permet d'éviter que vos mises à jour ne constituent des changements brusques pour les clients qui utilisent vos thèmes. Pour mettre en place la migration à partir des anciens modules, consultez le [forum des idées HubSpot](https://community.hubspot.com/t5/HubSpot-Ideas/Create-a-path-to-make-it-possible-to-migrate-existing-fields-to/idi-p/450311#M85938). ### CSS générée Certains champs de style permettent d'éditer directement des CSS en fonction de la valeur du champ. Cette fonction est particulièrement utile pour les champs qui peuvent contrôler des styles plus complexes, comme les dégradés. Les champs de style suivants ont une propriété `.css` générée : * [Image d'arrière-plan](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#background-image) * [Bordure](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#border) * [Couleur](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#color) * [Police](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#font) * [Dégradé](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#gradient) * [Espacement](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#spacing) * [Alignement du texte](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#text-alignment) ```hubl theme={null} {% require_css %} {% end_require_css %} ``` ## Répéteurs Lorsque vous créez des modules qui mettent en forme des informations, il arrive souvent que certains types d'informations se répètent. Un module de recette, par exemple, peut avoir un champ dédié aux « Ingrédients ». La plupart des recettes se composent de plus d'un ingrédient. En les dotant d'un champ de texte enrichi, il se peut que vous ne puissiez plus imposer de style cohérent ni ajouter de fonctionnalités pour chaque ingrédient. C'est là tout l'intérêt des répéteurs, dont HubSpot dispose de deux formes distinctes : les champs répétés et les groupes répétés. ### Champs répétés Les champs répétés sont des champs normaux, mais les créateurs de contenu peuvent ajouter, supprimer et réorganiser les instances du champ. En utilisant l'exemple de module de recette ci-dessus, chaque ingrédient peut être un champ de texte répété. ![champ répéteur](https://cdn2.hubspot.net/hubfs/53/repeater%20field.png) Ainsi, le créateur de contenu peut ajouter autant d'ingrédients qu'il le souhaite. Les développeurs obtiennent un tableau qu'ils peuvent faire défiler pour imprimer cette liste d'ingrédients, en appliquant le formatage et les fonctionnalités désirés. Les champs répéteurs sont utilisés de préférence dans des situations très simples. Il est souvent plus judicieux de [répéter les groupes](#repeating-groups). > [!WARNING] > > **Remarque :** il n'est actuellement pas possible de définir l'ordre par défaut des champs répétés. #### Champs répétés dans fields.json ```json theme={null} // Repeating field example { "name": "ingredient", "label": "Ingredient", "required": false, "locked": false, "occurrence": { "min": 1, "max": null, "sorting_label_field": null, "default": 1 }, "allow_new_line": false, "show_emoji_picker": true, "type": "text", "default": ["1 cup water"] } ``` #### Boucle dans les éléments du module HTML+HubL ```html theme={null}
    {% for item in module.ingredient %}
  • {{ item }}
  • {% endfor %}
``` ### Groupes répétés Les groupes répétés sont des groupes de champs dont l'option de répétition est activée. Les groupes répétés permettent aux créateurs de contenu d'ajouter, de supprimer et de réorganiser des groupes de champs. En utilisant l'exemple de module de recette, supposons que vous souhaitez intégrer votre liste d'ingrédients à une fonctionnalité de liste de courses au sein de votre module de recette. ![Groupe répété de champs](https://cdn2.hubspot.net/hubfs/53/Screen%20Shot%202020-02-26%20at%205.19.14%20PM.png) La quantité d'un ingrédient serait un élément crucial de la liste de courses. Si l'on fournit cette information dans le champ de texte, le module devrait alors analyser le champ de texte et espérer parvenir à séparer la quantité de l'ingrédient. C'est là toute l'utilité des groupes répétés. Le résultat de ces champs est un objet qui peut être parcouru en boucle. #### Groupes répétés dans fields.json ```json theme={null} // Repeating field group example { "id": "ingredients", "name": "ingredients", "label": "Ingredients", "required": false, "locked": false, "occurrence": { "min": 1, "max": null, "sorting_label_field": "ingredients.ingredient", "default": null }, "children": [ { "id": "ingredients.ingredient", "name": "ingredient", "label": "Ingredient", "required": false, "locked": false, "validation_regex": "", "allow_new_line": false, "show_emoji_picker": false, "type": "text", "default": "Water" }, { "id": "ingredients.quantity", "name": "quantity", "label": "Quantity", "required": false, "locked": false, "display": "text", "min": 0, "step": 1, "type": "number", "default": 1 }, { "id": "ingredients.measurement", "name": "measurement", "label": "Measurement", "help_text": "Unit of measurement (cups, tbsp, etc.)", "required": false, "locked": false, "allow_new_line": false, "show_emoji_picker": false, "type": "text", "default": "cups" } ], "type": "group", "default": [ { "ingredient": "Water", "quantity": 1, "measurement": "cups" } ] } ``` #### Boucle dans les champs répétés des modules ```html theme={null}

Ingredients

    {% for ingredient in module.ingredients %}
  • {{ ingredient.quantity }} {{ ingredient.measurement }} {{ ingredient.ingredient }}
  • {% endfor %}
``` ### Options du répéteur Pour améliorer l'expérience d'édition et empêcher les éditeurs de contenu de fournir des valeurs que vous n'avez pas prises en compte dans le programme, nous vous permettons de définir des valeurs minimales et maximales pour le nombre d'éléments que les créateurs de contenu peuvent ajouter à un champ répété ou à un groupe répété. Pour les groupes répétés, vous pouvez également définir le champ qui sert de libellé pour cet élément lors de l'affichage du répéteur. ![Nombre maximal d'occurrences](https://cdn2.hubspot.net/hubfs/53/Screen%20Shot%202020-02-26%20at%205.35.29%20PM.png) ```json theme={null} "occurrence" : { "min" : 1, "max" : 4, "sorting_label_field" : "ingredients.ingredient", } ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `max` | Entier | Nombre maximum d'occurrences de ce groupe. Empêche le créateur de contenu d'ajouter plus que ce nombre d'éléments dans l'interface utilisateur. | `null` | | `min` | Entier | Nombre minimum d'occurrences de ce groupe de champs. Empêche le créateur de contenu d'avoir moins de ce nombre d'éléments dans l'interface utilisateur. | `null` | | `sorting_label_field` | Chaîne | Il s'agit de l'identifiant du champ dont il faut extraire le texte pour l'afficher dans l'interface utilisateur sur les cartes à glisser. Par défaut, il s'agit du premier champ du groupe. | | ## Champs hérités La propriété `inherited_value` peut être configurée pour qu'un champ hérite de sa valeur par défaut d'autres champs. Pour définir la valeur par défaut d'un champ à partir de la valeur d'un autre champ, définissez `default_value_path` comme chemin d'accès au nom du champ cible. Lorsque `default_value_path` est défini, il ignorera tout `default` défini sur le champ. Pour accéder aux valeurs d'autres champs, les chemins doivent inclure `module.` au début, comme lorsque vous accédez à la valeur dans le code HubL du module. ```json theme={null} // Inherited fields { "name": "body_font", "type": "font", "default": { "font": "Helvetica", "color": "#C27BA0" } }, { "name": "h1_font", "type": "font", "default": {}, "inherited_value": { "default_value_path": "module.body_font", "property_value_paths" : { "font": "module.body_font.font", "font_set": "module.body_font.font_set" } } } ``` > [!NOTE] > > Étant donné que la famille de polices est déterminée par une combinaison de `font` et `font_set`, vous devez inclure les deux pour l'héritage des champs de police. Découvrez-en davantage sur le [champ de police](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#font). Pour les champs complexes (champs dont les valeurs sont des objets), les utilisateurs peuvent disposer d'une plus grande granularité sur les propriétés héritées grâce à l'option `property_value_path`. Tous les chemins référencés dans `inherited_value` peuvent également inclure des clés provenant de la valeur d'un champ pour les champs complexes. Par exemple, les champs de couleur ont des valeurs d'objet qui contiennent la couleur du champ ainsi que son opacité. Ainsi, pour obtenir la valeur réelle d'une couleur sans son opacité, le chemin d'accès doit se terminer par `.color`. Par exemple, un champ de police ne peut hériter sa couleur que d'un champ de couleur distinct : ```json theme={null} // Inherited fields with objects { "name": "secondary_color", "type": "color", "default": { "color": "#C27BA0", "opacity": 100 } }, { "name": "h1_font", "type": "font", "default": { "font": "Helvetica", "size": 12, "size_unit": "px" }, "inherited_value": { "property_value_paths": { "color": "module.secondary_color.color" } } } ``` Vous pouvez également combiner les effets de `default_value_path` et de `property_value_paths` pour hériter d'une valeur par défaut d'un champ tout en héritant d'une valeur de propriété spécifique d'un champ différent : ```json theme={null} // combining default_value_path and property_value_paths { "name": "body_font", "type": "font", "default": { "font": "Helvetica", "color": "#000000" } }, { "name": "secondary_color", "type": "color", "default": { "color": "#C27BA0", "opacity": 100 } }, { "name": "h1_font", "type": "font", "default": {}, "inherited_value": { "default_value_path": "module.body_font", "property_value_paths": { "color": "module.secondary_color.color" } } } ``` Si un champ hérite d'un autre champ, mais qu'il est ensuite directement remplacé au niveau de la page ou dans les paramètres du thème, son lien avec le champ de contrôle est rompu. Les champs liés via `default_value_path` ou `property_value_paths` n'affecteront plus la valeur de ce champ. ## Visibilité du champ Lors de la définition de champs de module et de thème personnalisés, vous pouvez configurer l'affichage d'un champ en ajoutant l'objet `visibility` au champ dans le fichier `fields.json`. Par exemple, vous pouvez définir un module de formulaire pour afficher une zone de texte enrichi lorsque le message de remerciement est sélectionné, mais un sélecteur de page lorsqu'une redirection est sélectionnée. Vous pouvez définir la visibilité en fonction de la valeur de `controlling_field_path` ou d'une propriété spécifique dans ce champ à l'aide du paramètre `property`. Vous pouvez également appliquer la visibilité à un champ individuel ou à un groupe de champs pour contrôler la visibilité de tous les éléments du groupe. ```json theme={null} "visibility" : { "controlling_field_path" : "field_name", "controlling_value_regex" : "regular_expression_in_controlling_field", "property": "src", "operator" : "EQUAL" } ``` | Paramètre | Type | Description | | - | - | - | | `controlling_field_path` | Chaîne | Le chemin du champ qui contrôle la condition d'affichage.
  • Si le champ n'est pas imbriqué dans un groupe de champs, utilisez le nom du champ (par exemple : `field_name`).
  • Pour les champs imbriqués dans des groupes, le chemin doit correspondre à sa structure de groupe, séparée par un point. Par exemple :
    • `field_group_name.field_name`
    • `parent_group.child_group.field_name`
| | `controlling_value_regex` | Chaîne | L'expression régulière dans le champ de contrôle qui doit être présente pour que le champ s'affiche. L'expression régulière doit correspondre à la chaîne entière (et non à un sous-ensemble) et est exécutée en fonction de la casse. | | `operator` | Chaîne | L'opérateur qui définit la manière dont la valeur `controlling_value_regex` doit être respectée. Opérateurs possibles :
  • `NOT_EQUAL`
  • `EQUAL`
  • `EMPTY`
  • `NOT_EMPTY`
  • `MATCHES_REGEX`
| | `property` | Chaîne | Définit la visibilité en fonction d'une propriété spécifique du champ cible. Par exemple, vous pouvez activer la visibilité lorsque la propriété `src` d'un champ d'image est égale à une valeur spécifique. Par défaut, si aucune valeur n'est fournie pour ce champ, la visibilité est basée sur la valeur de chaîne de `controlling_value_regex`. | Vous pouvez également inclure un objet `occurrence_options` à l'intérieur de l'objet `visibility` pour cibler le nombre de valeurs d'un champ répété. Cet objet doit inclure `count` pour la comparaison et une définition `operator`. Par exemple, pour afficher un champ de texte uniquement lorsqu'un autre champ répété comporte au moins deux éléments, vous pouvez définir `visibility` comme suit : ```json theme={null} [ { "type": "group", "name": "ingredients", "label": "Recipe ingredients", "display": "drilldown", "children": [ { "name": "ingredient", "label": "Ingredient", "occurrence": { "min": 1, "max": null, "default": 1 }, "type": "text", "default": ["1 cup water"] }, { "type": "text", "label": "Conditional field", "name": "conditional_field", "visibility": { "controlling_field_path": "ingredients.ingredient", "occurrence_options": { "count": 2, "operator": "GREATER_THAN_OR_EQUAL" } } } ] } ] ``` Vous pouvez utiliser n'importe laquelle des valeurs suivantes `operater` : * `"NOT_EQUAL"` * `"EQUAL"` * `"EMPTY"` * `"NOT_EMPTY"` * `"GREATER_THAN"` * `"GREATER_THAN_OR_EQUAL"` * `"LESS_THAN"` * `"LESS_THAN_OR_EQUAL"` ### Visibilité avancée L'attribut `visibility` ne peut prendre en charge qu'un seul critère à la fois. Pour inclure plusieurs critères avec plusieurs opérateurs ainsi que l'ordre des opérations, vous pouvez utiliser `advanced_visibility`. ```json theme={null} "visibility_rules" : "ADVANCED", "advanced_visibility" : { "boolean_operator" : "AND", "criteria" : [{ "controlling_field_path" : "field_name", "controlling_value_regex" : "regular_expression_in_controlling_field", "operator" : "MATCHES_REGEX" }, { "controlling_field_path" : "field_name", "controlling_value_regex" : "regular_expression_in_controlling_field", "operator" : "EQUAL" }] } ``` | Paramètre | Type | Description | | - | - | - | | `visibility_rules` | Chaîne | Par défaut, cette valeur est définie sur `SIMPLE`. Pour utiliser `advanced_visibility`, définissez sur `ADVANCED`. | | `boolean_operator` | Chaîne | L'opérateur booléen pour les critères conditionnels. Peut être `AND` ou `OR`. | | `criteria` | Tableau | Un tableau d'objets de visibilité qui définit les critères conditionnels qui doivent être remplis pour que le champ s'affiche. | | `controlling_field_path` | Chaîne | Le chemin du champ qui contrôle la condition d'affichage.
  • Si le champ n'est pas imbriqué dans un groupe de champs, utilisez le nom du champ (ex : `field_name`).
  • Pour les champs imbriqués dans des groupes, le chemin doit correspondre à sa structure de groupe, séparée par un point. Par exemple :
    • `field_group_name.field_name`
    • `parent_group.child_group.field_name`
| | `controlling_value_regex` | Chaîne | La valeur dans le champ de contrôle qui doit être respectée pour afficher le champ. Lors de l'utilisation de l'opérateur `MATCHES_REGEX`, l'expression régulière doit correspondre à la chaîne entière (et non à un sous-ensemble) et est exécutée en fonction de la casse. Un champ avec `controlling_field_path`, mais sans `controlling_value_regex` est visible si le champ de contrôle a une valeur non-nulle et non vide. | | `operator` | Chaîne | L'opérateur qui définit la manière dont la valeur `controlling_value_regex` doit être respectée. Opérateurs possibles :
  • `NOT_EQUAL`
  • `EQUAL`
  • `EMPTY`
  • `NOT_EMPTY`
  • `MATCHES_REGEX`
La syntaxe de l'expression régulière est obligatoire lors de l'utilisation de `MATCHES_REGEX`. | Par exemple, vous trouverez ci-dessous la première partie du code du [module de paiement par défaut](https://developers.hubspot.fr/docs/cms/reference/modules/default-modules). Pour consulter le code complet, vous pouvez cloner le module dans HubSpot, puis le télécharger dans votre environnement local pour afficher le fichier `fields.json` du module. ```json theme={null} [ { "id": "payment", "name": "payment", "display_width": null, "label": "Payment", "required": true, "locked": false, "type": "payment", "default": { "id": null, "properties": {} } }, { "id": "checkout_location", "name": "checkout_location", "display_width": null, "label": "Checkout behavior", "required": false, "locked": false, "visibility": { "controlling_field_path": "payment", "controlling_value_regex": "id\":\\d+", "operator": "MATCHES_REGEX" }, "display": "radio", "choices": [ ["new_tab", "Open in a new tab"], ["overlay", "Sliding overlay"] ], "type": "choice", "default": "new_tab" }, { "id": "button_text", "name": "button_text", "display_width": null, "label": "Button text", "required": true, "locked": false, "validation_regex": "", "visibility": { "controlling_field_path": "payment", "controlling_value_regex": "id\":\\d+", "operator": "MATCHES_REGEX" }, "allow_new_line": false, "show_emoji_picker": false, "type": "text", "default": "Checkout" }, { "id": "icon", "name": "icon", "display_width": null, "label": "Icon", "required": false, "locked": false, "visibility_rules": "ADVANCED", "advanced_visibility": { "boolean_operator": "AND", "criteria": [ { "controlling_field_path": "payment", "controlling_value_regex": "id\":\\d+", "operator": "MATCHES_REGEX" }, { "controlling_field_path": "add_icon", "controlling_value_regex": "true", "operator": "EQUAL" } ], "children": [] }, "children": [ { "id": "icon.icon", "name": "icon", "display_width": null, "label": "Icon", "required": true, "locked": false, "icon_set": "fontawesome-5.0.10", "type": "icon", "default": { "name": "hubspot", "type": "SOLID", "unicode": "f3b2" } }, { "id": "icon.position", "name": "position", "display_width": null, "label": "Position", "required": true, "locked": false, "display": "select", "choices": [ ["left", "Left"], ["right", "Right"] ], "type": "choice", "default": "left" } ], "tab": "CONTENT", "expanded": false, "type": "group" } // rest of fields.json code ] ``` Le code ci-dessus entraîne le comportement suivant : * Le premier champ (`payment`) est un champ obligatoire (menu déroulant) qui permet au créateur de contenu de sélectionner un lien de paiement spécifique. Dans HubSpot, un créateur de contenu verra les éléments suivants lors du premier ajout du module à la page : ![payment-link-selector](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/payment-link-selector.png) * Une fois qu'un lien de paiement est sélectionné, les trois champs suivants (`checkout_location`, `button_text`, et `icon`) s'affichent. En effet, les champs ont un attribut `visibility` contrôlé par le champ de `payment` et nécessitant une valeur d'ID dans le paramètre `id` du champ de paiement. Le champ `icon` lui-même utilise `advanced_visibility` pour apparaître uniquement lorsqu'un lien de paiement est présent dans le champ `payment` ET lorsque la case à cocher `add_icon` est sélectionnée. En plus de définir la visibilité dans `fields.json`, vous pouvez définir la visibilité dans le gestionnaire de conception en modifiant les options *Conditions d'affichage* d'un champ. ![display-conditions-property](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/display-conditions-property.png) Après avoir défini la visibilité dans le gestionnaire de conception, vous pouvez [récupérer](/docs/developer-tooling/local-development/hubspot-cli/reference#fetch) le module [à l'aide de l'ILC](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) pour afficher l'attribut `visibility` dans le fichier `fields.json` du module. ## Désactivation de champ conditionnel Vous pouvez ajouter des conditions à un champ pour empêcher la modification lorsque les conditions spécifiées sont remplies. Vous pouvez également définir un message à afficher au-dessus du champ lorsqu'il est désactivé pour fournir un contexte dans l'éditeur de contenu. ![Screenshot 2023-05-23 at 4.10.28 PM](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/Screenshot%202023-05-23%20at%204.10.28%20PM.png) Les conditions et le message sont définis dans l'objet `disabled_controls` du champ. Les conditions pour rendre un champ modifiable sont définies dans l'objet `rules`, qui suit le même format que [advanced\_visibility](#field-visibility). Le code ci-dessous montre à la fois une mise en œuvre simple et avancée des critères `rules` : * Le champ `simple_page` inclut une logique pour désactiver le champ si le champ `text_field` est défini sur `testing`. * Le champ `fancy_page` inclut une logique pour désactiver le champ si `text_field` ou `text_field_2` est défini sur une valeur non égale à `testing` et `testing2` respectivement. ```json theme={null} // example fields.json [ { "type": "text", "name": "text_field", "label": "Text field" }, { "type": "text", "name": "text_field_2", "label": "Text field 2" }, { "type": "page", "label": "Simple Page", "name": "simple_page", "disabled_controls": { "message": "This field is disabled", "rules": { "criteria": [ { "controlling_field_path": "text_field", "operator": "EQUAL", "controlling_value_regex": "testing" } ] } } }, { "type": "page", "label": "Fancy Page", "name": "fancy_page", "disabled_controls": { "message": "This field is disabled", "rules": { "boolean_operator": "OR", "criteria": [ { "controlling_field_path": "text_field", "operator": "NOT_EQUAL", "controlling_value_regex": "testing" }, { "controlling_field_path": "text_field_2", "operator": "NOT_EQUAL", "controlling_value_regex": "testing2" } ] } } } ] ``` | Paramètre | Type | Description | | - | - | - | | `message` | Chaîne | Le message à afficher dans l'éditeur de contenu lorsque le champ est désactivé. | | `rules` | Objet | Les conditions d'activation du champ pour modification. | | `criteria` | Tableau | Un tableau d'objets de condition qui définit les critères qui doivent être remplis pour que le champ s'affiche. Ce tableau peut contenir plusieurs objets de condition séparés par une logique `AND` ou `OR` via le paramètre `boolean_operator`. | | `boolean_operator` | Chaîne | L'opérateur booléen pour les critères conditionnels. Peut être `AND` ou `OR`. Lorsqu'il n'est pas spécifié, la valeur par défaut est `AND`. | | `controlling_field_path` | Chaîne | Le chemin du champ qui contrôle la condition d'affichage.
  • Si le champ n'est pas imbriqué dans un groupe de champs, utilisez le nom du champ (ex : `field_name`).
  • Pour les champs imbriqués dans des groupes, le chemin doit correspondre à sa structure de groupe, séparée par un point. Par exemple :
    • `field_group_name.field_name`
    • `parent_group.child_group.field_name`
| | `controlling_value_regex` | Chaîne | La valeur dans le champ de contrôle qui doit être respectée pour afficher le champ. Lors de l'utilisation de l'opérateur `MATCHES_REGEX`, l'expression régulière doit correspondre à la chaîne entière (et non à un sous-ensemble) et est exécutée en fonction de la casse. Un champ avec `controlling_field_path`, mais sans `controlling_value_regex` est visible si le champ de contrôle a une valeur non-nulle et non vide. | | `operator` | Chaîne | L'opérateur qui définit la manière dont la valeur `controlling_value_regex` doit être respectée. Opérateurs possibles :
  • `NOT_EQUAL`
  • `EQUAL`
  • `EMPTY`
  • `NOT_EMPTY`
  • `MATCHES_REGEX`
La syntaxe de l'expression régulière est obligatoire lors de l'utilisation de `MATCHES_REGEX`. | ## Mise en évidence des champs de l'éditeur de thème Dans l'éditeur de thème, la mise en évidence de l'aperçu peut aider les créateurs de contenu à identifier les champs qui contrôlent les éléments de page. La mise en évidence de l'aperçu fonctionne en associant les champs du thème aux sélecteurs CSS qu'ils affectent, en ajoutant une zone autour de ces éléments lors du survol du champ dans l'éditeur de thème. Pour configurer la mise en évidence d'aperçu pour les champs de thème, vous inclurez un fichier `editor-preview.json` dans le répertoire racine du thème pour mapper les champs de thème à une liste de sélecteurs CSS. Dans le fichier, vous inclurez un tableau pour chaque champ de style que vous souhaitez mettre en évidence contenant les sélecteurs CSS pertinents, en utilisant le format suivant : ```json theme={null} // editor-preview.json { "selectors": { "theme.settings.path.1": [ ], "theme.settings.path.2": [ ], } } ``` Par exemple, le code ci-dessous mettra en évidence les éléments de la page qui sont contrôlés par le champ de police principal. Vous pouvez consulter l'exemple complet dans le fichier `editor-preview.json` du thème Growth par défaut. ```json theme={null} // editor-preview.json { "selectors": { "fonts.primary": [ "button, .button, .hs-button", "form input[type='submit'], form .hs-button", ".error-page:before", "p", "blockquote > footer", "form td.is-today .pika-button", "form .is-selected .pika-button", "th, td", ".blog-listing__post-tag", ".blog-listing__post-author-name, .blog-post__author-name", ".pagination__link-icon svg", ".tabs__tab", "a", ".button.button--simple", ".pagination__link .pagination__link-icon svg", ".card--dark", ".card--light", ".card--light summary, .card--light p, .card--light h1, .card--light h2, .card--light h3, .card--light h4, .card--light h5, .card--light h6, .card--light a:not(.button), .card--light span, .card--light div, .card--light li, .card--light blockquote", ".card--light .accordion__summary:before", "tfoot th, tfoot td", ".header__language-switcher-current-label > span", ".header__language-switcher-child-toggle svg", ".header__language-switcher .lang_list_class a:not(.button)", ".header__menu-link", ".header__menu-item--depth-1 > .header__menu-link:not(.button)", ".header__menu-item--depth-1 .header__menu-child-toggle svg", ".header__menu-toggle svg", ".header__language-switcher .header__language-switcher-current-label > span", ".header p, .header h1, .header h2, .header h3, .header h4, .header h5, .header h6, .header a:not(.button), .header span, .header li, .header blockquote, .header .tabs__tab, .header .tabs__tab, .header .tabs__tab, .header .tabs__tab", ".footer .hs-menu-wrapper a", ".footer h1, .footer h2, .footer h3, .footer h4, .footer h5, .footer h6, .footer p, .footer a:not(.button), .footer span, .footer div, .footer li, .footer blockquote, .footer .tabs__tab, .footer .tabs__tab, .footer .tabs__tab, .footer .tabs__tab", ".footer hr", "form label", "#email-prefs-form, #email-prefs-form h1, #email-prefs-form h2", "form legend", "form input[type='text'], form input[type='email'], form input[type='password'], form input[type='tel'], form input[type='number'], form input[type='search'], form select, form textarea", ".backup-unsubscribe input[type='email']", "form .legal-consent-container, form .legal-consent-container .hs-richtext, form .legal-consent-container .hs-richtext p", "form .hs-richtext, form .hs-richtext *, form .hs-richtext p, form .hs-richtext h1, form .hs-richtext h2, form .hs-richtext h3, form .hs-richtext h4, form .hs-richtext h5, form .hs-richtext h6", "button, button, button, .button, .button, .button, .hs-button, .hs-button, .hs-button", "button, .button, .hs-button", ".button.button--secondary, .button.button--secondary, .button.button--secondary", ".button.button--secondary", ".header__menu-item--depth-1 > .header__menu-link, .header__menu-item--depth-1 > .header__menu-link", ".header__menu-item--depth-1 > .header__menu-link", ".header__menu-submenu .header__menu-link, .header__menu-submenu .header__menu-link", ".header__language-switcher .lang_list_class a, .header__language-switcher .lang_list_class a", ".header__menu-submenu .header__menu-link:not(.button)", ".footer .hs-menu-wrapper a, .footer .hs-menu-wrapper a", ".footer .hs-menu-wrapper a", "form .hs-richtext a", ".header__menu-item--depth-1 > .header__menu-link--active-link:not(.button)", ".footer .hs-menu-wrapper .active > a" ] } } ``` ![growth-theme-hover](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/growth-theme-hover.png) Pour commencer à générer ce fichier, exécutez la [commande d'ILC](/docs/developer-tooling/local-development/hubspot-cli/reference#generate-theme-field-selectors-for-in-app-highlighting) suivante pour créer le fichier. Lors de la création du fichier, un script s'exécutera pour configurer les mappages initiaux des sélecteurs de champ. ```shell theme={null} hs theme generate-selectors ``` | Paramètre | Description | | - | - | | `theme-directory-path` | Le chemin d'accès au répertoire du thème. | Après avoir exécuté la commande, vous devrez examiner et affiner le fichier `editor-preview.json` pour vous assurer que les champs et les sélecteurs sont mappés correctement. Si la commande [generate-selectors](/docs/developer-tooling/local-development/hubspot-cli/reference#generate-theme-field-selectors-for-in-app-highlighting) fera une supposition rudimentaire sur les champs qui affectent les sélecteurs, vous devrez apporter des corrections en fonction de la façon dont votre thème est construit. Par exemple, cette commande ne peut pas détecter si des modules remplacent le style ou si vous utilisez des macros. Pour tester ces mappages, téléchargez le thème sur un compte, puis consultez l'éditeur de thème de ce compte (\*\*Paramètres \*\* > **Site web** > **Thèmes** > **Afficher le thème**). # Configurer l'éditeur de texte enrichi Source: https://developers.hubspot.fr/docs/cms/reference/fields/rich-text-editor L'éditeur de texte enrichi à l'intérieur des modules personnalisés permet désormais aux développeurs de supprimer des composants de la barre d'outils de configuration. En tant que développeur, il arrive que les éditeurs WYSIWYG fournissent des fonctionnalités qui, lorsqu'elles sont mal utilisées, peuvent entraver l'objectif d'une marque unifiée et causer des problèmes de conception et de flux de contenu. L'éditeur de texte enrichi à l'intérieur des modules personnalisés permet désormais aux développeurs de supprimer des composants de la barre d'outils de configuration via la propriété `enabled_features` à l'intérieur du fichier fields.json. > [!WARNING] > > Remarque : Ce qui suit s'applique aux modules personnalisés utilisant le champ de texte enrichi en développement local uniquement. L'utilisation de cette fonctionnalité ne désactivera pas la fonctionnalité des options supprimées de l'éditeur de texte enrichi, uniquement l'affichage des options. Cela s'explique par des raisons de rétrocompatibilité, de sorte que le contenu existant n'est pas affecté. ## Comment utiliser enabled\_features Dans votre fichier fields.json où vous avez votre objet de champ de texte enrichi, vous pouvez activer certaines fonctionnalités en ajoutant les options valides de la barre d'outils dans un tableau à la propriété `enabled_features`, comme indiqué ci-dessous : ```json theme={null} // Rich text field with only Bold, Link, and Image available in the Toolbar { "name": "description", "label": "Description", "required": false, "locked": false, "type": "richtext", "default": null, "enabled_features": ["bold", "link", "image"] } ``` L'éditeur de contenu verra alors l'éditeur de texte enrichi avec uniquement les options incluses activées, comme illustré dans l'image ci-dessous : > [!NOTE] > > Remarque : Certaines fonctionnalités, telles que le bouton Effacer les styles qui vous permet de revenir au style par défaut de l'éditeur, seront toujours activées et ne peuvent pas être supprimées. Si la propriété `enabled_features` est omise, toutes les fonctionnalités apparaîtront. ![Un exemple de barre d'outils RTE avec les fonctionnalités activées.](https://f.hubspotusercontent00.net/hubfs/53/Developer%20Site/assets/images/custom_rte_toolbar.jpg) ## Liste de fonctionnalités Voici une liste des fonctionnalités qui peuvent être activées individuellement lors de l'utilisation de la propriété `enabled_features`. ### Groupes de contrôles | Option | Description | | - | - | | `colors` | Contrôles de la couleur du texte et de l'arrière-plan. | | `fonts` | Contrôles de la famille de polices et de la taille de police. | | `indents` | Contrôles du retrait négatif et du retrait. | | `lists` | Contrôles de listes à puces et numérotées. | | `standard_emphasis` | Contrôles du texte gras, italique et souligné. | | `advanced_emphasis` | Contrôles de texte barré, d'exposant, d'indice et de format de code. | | `glyphs` | Contrôles d'émojis, de caractères spéciaux et d'icônes. Non pris en charge dans les modules d'e-mail. Pour ajouter le sélecteur d'emoji aux modules d'e-mail, utilisez plutôt [emoji](#insert-buttons). | ### Formatage de texte | Option | Description | | - | - | | `block` | Affiche le menu déroulant du sélecteur de style. | | `font_family` | Affiche le menu déroulant du sélecteur de police. | | `font_size` | Affiche le menu déroulant de la taille de la police. | | `bold` | Affiche le bouton de texte en gras. | | `italic` | Affiche le bouton de texte en italique. | | `underline` | Affiche le bouton de texte souligné. | | `text_color` | Affiche le bouton de couleur du texte. | | `background_color` | Affiche le bouton de couleur d'arrière-plan. | | `alignment` | Affiche le bouton d'alignement. | | `bulleted_list` | Affiche le bouton de liste à puces. | | `numbered_list` | Affiche le bouton de liste numérotée. | | `lineheight` | Affiche le bouton de hauteur de ligne. | | `outdent` | Affiche le bouton de retrait négatif. | | `indent` | Affiche le bouton de retrait. | | `strikethrough` | Affiche le bouton de texte barré. | | `superscript` | Affiche le bouton d'exposant. | | `subscript` | Affiche le bouton d'indice. | | `code_format` | Affiche le bouton de format de code. | ### Insérer des boutons | Option | Description | | - | - | | `link` | Affiche le bouton de lien. | | `image` | Affiche le bouton d'image. Non pris en charge dans les modules d'e-mail. | | `emoji` | Affiche le bouton d'émoji. | | `personalize` | Affiche l'élément de barre d'outils de personnalisation. | | `cta` | Affiche l'élément de menu de call-to-action sous le menu d'insertion. | | `embed` | Affiche l'élément de menu d'intégration sous le menu d'insertion. | | `video` | Affiche l'élément de menu vidéo sous le menu d'insertion. | | `table` | Affiche l'élément de menu de tableau sous le menu d'insertion. | | `charmap` | Affiche l'élément de menu de caractères spéciaux sous le menu d'insertion. | | `anchor` | Affiche l'élément de menu d'ancrage sous le menu d'insertion. | | `hr` | Affiche l'élément de menu de ligne horizontale sous le menu d'insertion. | | `nonbreaking_space` | Affiche l'élément de menu d'espace insécable sous le menu d'insertion. | | `icon` | Affiche l'élément de menu d'icône sous le menu d'insertion. | ### Options avancées | Option | Description | | - | - | | `source_code` | Affiche l'élément de menu de code source sous le menu avancé. | | `visual_blocks` | Affiche l'élément de menu d'affichage des blocs sous le menu avancé. | # Filtres HubL Source: https://developers.hubspot.fr/docs/cms/reference/hubl/filters Liste de filtres HubL et exemples pour les développeurs CMS Hub. Les filtres affectent le résultat final de votre HubL. Ils peuvent être appliqués à diverses annonces et expressions HubL pour modifier le balisage du modèle produit par le serveur. La syntaxe de base d'un filtre est `|filtername`. Le filtre est ajouté directement après l'annonce ou l'expression, à l'intérieur de ses séparateurs. Certains filtres ont des paramètres supplémentaires qui peuvent être ajoutés entre parenthèses. La syntaxe de base d'un filtre avec un paramètre de type chaîne, nombre et booléen est : `|filtername("stringParameter", 10, true)`. Notez que les paramètres de type chaîne doivent être écrits entre guillemets. Notez également que les filtres HubL ont un alias qui peut être utilisé pour servir le même objectif que le filtre principal. L'article suivant contient tous les filtres HubL pris en charge. > [!WARNING] > > ### Remarque: > > vous pouvez appliquer les filtres HubL aux [jetons de personnalisation](https://knowledge.hubspot.com/website-pages/personalize-your-content), tels que les jetons de contact et d'entreprise, sur les pages de CMS Hub et de blog, mais pas dans les e-mails. ## abs Obtient la valeur absolue d'un nombre. Vous pouvez utiliser ce filtre pour vérifier qu'un nombre est positif. ```text hubl.txt theme={null} {% set my_number = -53 %} {{ my_number|abs }} ``` ```text sortie rendue.txt theme={null} 53 ``` ## add Ajoute une valeur numérique à une autre valeur numérique. Ce filtre fonctionne de la même manière que l'[opérateur +](/docs/cms/reference/hubl/operators-and-expression-tests#math). Le paramètre entre parenthèses est l'addendum que vous combinez avec votre valeur numérique initiale. ```text hubl.txt theme={null} {% set my_num = 40 %} {{ my_num|add(13) }} ``` ```text sortie rendue.txt theme={null} 53 ``` ## attr Rend l'attribut d'un dictionnaire. Ce filtre est l'équivalent de l'impression d'une variable qui existe dans un dictionnaire, comme `content.absolute_url`. ```text hubl.txt theme={null} {{ content|attr("absolute_url") }} ``` ```text sortie rendue.txt theme={null} https://developers.hubspot.com/docs/cms/hubl/filters ``` | Paramètre | Description | | - | - | | `attribute_name` | Indique l'attribut à imprimer | ## batch Regroupe les éléments dans une séquence. Dans l'exemple ci-dessous, une variable contient une séquence de types de fruits. Le filtre `batch` est appliqué à une boucle qui parcourt la séquence. La boucle imbriquée s'exécute trois fois pour imprimer 3 types de fruits par ligne, avant que la boucle externe ne s'exécute à nouveau. Remarquez dans la sortie finale, puisqu'il n'y a que 5 types de fruits, le dernier élément est remplacé par un ` ` (le deuxième paramètre). ```html example.html theme={null} {% set rows = ["apples", "oranges", "pears", "grapes", "blueberries"] %} {% for row in rows|batch(3, " ") %} {% for column in row %} {% endfor %} {% endfor %}
{{ column }}
``` ```html example.html theme={null}
apples oranges pears
grapes blueberries  
``` | Paramètre | Type | Description | | - | - | - | | `linecount` | Nombre | Le nombre d'éléments à inclure dans le lot. | | `fill_with` | Chaîne | Indique ce qu'il faut inclure pour compléter les éléments manquants | ## between\_times Calcule le temps entre deux objets datetime dans une unité de temps indiquée. > [!WARNING] > > ### Remarque: > > vous devez uniquement utiliser ce filtre avec les variables qui renvoient une date. À compter du 30 septembre 2024, ce filtre ne renverra plus la date du jour lorsqu'une valeur nulle est transmise. Après cette date, une valeur nulle dans le filtre renverra la date 30 septembre 2024. ```text hubl.txt theme={null} {% set begin = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {% set end = "2018-07-20T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ begin|between_times(end, "days") }} ``` ```text sortie rendue.txt theme={null} 6 ``` | Paramètre | Type | Description | | - | - | - | | `end` | Objet datetime | L'objet datetime de fin. | | `timeunit` | Chaîne | Les unités de temps valides sont `nanos`, `micros`, `millis`, `seconds`, `minutes`, `hours`, `half_days`, `days`, `weeks`, `months`, `years`, `decades`, `centuries`, `millennia` et `eras`. | ## bool Convertit une valeur de chaîne de texte en un booléen. ```text hubl.txt theme={null} {% if "true"|bool == true %}hello world{% endif %} ``` ```text sortie rendue.txt theme={null} hello world ``` ## capitalize Met la première lettre d'une valeur variable en majuscule. Le premier caractère sera en majuscule, toutes les autres lettres seront en minuscules. Les mots suivants séparés par des espaces ou des traits d'union n'auront pas leur première lettre en majuscule. ```text hubl.txt theme={null} {% set sentence = "the first letter of a sentence should always be capitalized." %} {{ sentence|capitalize }} ``` ```text sortie rendue.txt theme={null} The first letter of a sentence should always be capitalized. ``` ## center Centre le texte dans une longueur de champ donnée à l'aide d'espaces. Ce filtre n'est pas recommandé et n'est pas particulièrement utile, car le compilateur HTML de HubSpot élimine automatiquement les espaces blancs ; cependant, il est inclus ici par souci d'exhaustivité. L'exemple ci-dessous montre ce filtre appliqué à une variable dans une pré-balise, de sorte que les espaces blancs ne sont pas supprimés. ```html example.html theme={null}
{% set var = "string to center" %}
before{{ var|center(80) }}after
``` ```html example.html theme={null}
before                                string to center                                after
``` \| Paramètre | Type | Description | \| --------- | ------ | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | \| `width` | Nombre | Précise la longueur de l'espace blanc dans lequel le texte doit être centré. | Précise la longueur de l'espace blanc dans lequel le texte doit être centré. | ## convert\_rgb Convertit une valeur HEX en une chaîne RVB. C'est utile si vous devez convertir des variables de couleur en RVB pour les utiliser avec une déclaration CSS RVBA. Dans l'exemple ci-dessous, la valeur définie par un module de couleur est convertie en une valeur RVB et utilisée dans une déclaration CSS RVBA. ```html example.html theme={null} {% set my_color = "#FFFFFF" %} {{ my_color|convert_rgb }} {% set my_color2="#000000" %}
``` ```html example.html theme={null} 255, 255, 255
``` ## cut Supprime une chaîne d'une valeur. Ce filtre peut être utilisé pour faire correspondre et couper une partie spécifique d'une chaîne. Le paramètre indique la partie de la chaîne qui doit être supprimée. L'exemple ci-dessous supprime l'espace et le mot world de la valeur originale de la variable. ```text hubl.txt theme={null} {% set my_string = "Hello world." %} {{ my_string|cut(" world") }} ``` ```text sortie rendue.txt theme={null} Hello. ``` | Paramètre | Type | Description | | - | - | - | | `characters_to_cut` | Chaîne | La partie de la chaîne qui doit être supprimée. | ## datetimeformat (obsolète) > [!WARNING] > > ### Remarque: > > Ce filtre est [obsolète](/docs/cms/versions-deprecations/deprecated/hubl/filters-functions#datetimeformat-function). Vous devrez plutôt utiliser le filtre [format\_datetime](#format-datetime), qui utilise une syntaxe plus standardisée. ## default Si la valeur est indéfinie, elle renverra le premier paramètre, sinon la valeur de la variable sera imprimée. Si vous voulez utiliser la valeur par défaut avec des variables qui s'évaluent comme false, vous devez définir le deuxième paramètre sur `true`. Le premier exemple ci-dessous imprime le message si la variable n'est pas définie. Le deuxième exemple applique le filtre à une chaîne vide, qui n'est pas indéfinie, mais il imprime un message à cause du deuxième paramètre. ```text hubl.txt theme={null} {{ my_variable|default("my_variable is not defined") }} {{ ""|default("the string was empty", true) }} ``` ```text sortie rendue.txt theme={null} my_variable is not defined the string was empty ``` | Paramètre | Type | Description | | - | - | - | | `default_value` | Chaîne | Valeur à renvoyer si la variable est indéfinie. Si la variable est définie, la valeur de la variable sera renvoyée à la place. | | `truthy` | Booléen | À définir sur `true` pour une utilisation avec des variables évaluées à `false`. | ## dictsort Trie un dictionnaire et donne des paires (clé, valeur). Les dictionnaires ne sont pas triés par défaut, mais vous pouvez imprimer un dictionnaire, trié par clé ou par valeur. Le premier paramètre est un booléen qui détermine si le tri prend en compte la casse ou non. Le deuxième paramètre détermine si le dictionnaire doit être trié par clé ou par valeur. L'exemple ci-dessous imprime un dictionnaire de contacts trié, avec tous les détails connus sur le contact. ```text hubl.txt theme={null} {% for item in contact|dictsort(false, "value") %} {{item}} {% endfor %} ``` ```text sortie rendue.txt theme={null} A sorted contact dictionary ``` | Paramètre | Type | Description | | - | - | - | | `case_sensitive` | Booléen | Détermine si le tri prend en compte la casse | | `sort_by` | `"key"` \| `"value"` | Détermine si le tri doit se faire par `key` ou par `value`. | ## difference Renvoie la différence de deux ensembles ou listes. La liste renvoyée par le filtre contient tous les éléments uniques qui se trouvent dans la première liste, mais pas dans la seconde. ```text hubl.txt theme={null} {{ [1, 2, 3]|difference([2, 3, 4, 5]) }} ``` ```text sortie rendue.txt theme={null} [1] ``` | Paramètre | Type | Description | | - | - | - | | `list` | Tableau | La deuxième liste à comparer pour trouver les différences par rapport à la liste originale. | ## divide Divise la valeur actuelle par un diviseur. Le paramètre transmis est le diviseur. Ce filtre est une alternative à l'opérateur /. ```text hubl.txt theme={null} {% set numerator = 106 %} {{ numerator|divide(2) }} ``` ```text sortie rendue.txt theme={null} 53 ``` | Paramètre | Type | Description | | - | - | - | | `divisor` | Nombre | Le nombre par lequel il faut diviser la variable. | ## divisible Une alternative au test d'expression `divisibleby`, le filtre divisible sera évalué comme true si la valeur est divisible par le nombre donné. ```text hubl.txt theme={null} {% set num = 10 %} {% if num|divisible(2) %} The number is divisible by 2 {% endif %} ``` ```text sortie rendue.txt theme={null} The number is divisible by 2 ``` | Paramètre | Type | Description | | - | - | - | | `divisor` | Nombre | Le nombre à utiliser pour évaluer si la valeur est divisible. | ## escape\_html Échappe le contenu d'une entrée HTML. Accepte une chaîne et convertit les caractères `&`, `<`, `>`, `‘`, `”` et `escape_jinjava` en séquences conformes à HTML. Utilisez ce filtre pour les variables HubL qui sont utilisées en HTML mais qui ne doivent autoriser aucun HTML. ```html example.html theme={null} {% set escape_string = "
This markup is printed as text
" %} {{ escape_string|escape_html }} ``` ```html example.html theme={null}
This markup is printed as text
``` ## escape\_attr Échappe le contenu d'une entrée d'attribut HTML. Accepte une chaîne et convertit les caractères `&`, `<`, `‘`, `”` et `escape_jinjava` en séquences conformes à HTML. Utilisez ce filtre pour les variables HubL qui sont ajoutées aux attributs HTML. Notez que lorsque vous échappez des valeurs d'attributs qui acceptent les URL, telles que `href`, vous devez utiliser le filtre `escape_url` à la place. ```html example.html theme={null} {% set escape_string = "This
markup is printed as text" %} {{escape_string|escape_attr}} ``` ```html example.html theme={null} This <br> markup is printed as text ``` ## escape\_jinjava Convertit les caractères `{` et `}` de la chaîne en séquences conformes à Jinjava. Utilisez ce filtre si vous devez afficher un texte susceptible de contenir de tels caractères dans Jinjava. ```text hubl.txt theme={null} {% set escape_string = "{{This markup is printed as text}}" %} {{ escape_string|escape_jinjava }} ``` ```text sortie rendue.txt theme={null} {{This markup is printed as text}} ``` ## escape\_js Échappe les chaînes, notamment `escape_jinjava`, afin qu'elles puissent être insérées en toute sécurité dans une déclaration de variable JavaScript. Utilisez ce filtre pour les variables HubL utilisées dans les éléments de script HTML. ```text hubl.txt theme={null} {% set escape_string = "\tThey said 'This string can safely be inserted into JavaScript.'" %} {{ escape_string|escape_js }} ``` ```text sortie rendue.txt theme={null} \tThey said \x27This string can safely be inserted into JavaScript.\x27 ``` ## escape\_url Échappe le contenu d'une entrée d'URL, applique les protocoles spécifiés, supprime les caractères invalides et dangereux et code les entités HTML. Renvoie une valeur vierge si une URL est valide. Utilisez ce filtre pour les variables HubL qui sont utilisées dans les attributs HTML qui doivent être des URL valides. ```text hubl.txt theme={null} {% set escape_string = "http://example.com/with space/" %} ``` ```text sortie rendue.txt theme={null} ``` ## escapejson Échappe les chaînes de caractères afin qu'elles puissent être utilisées comme des valeurs JSON. ```text hubl.txt theme={null} {% set escape_string = "" %} {% require_js position="head" %} {% end_require_js %} ``` ```text sortie rendue.txt theme={null} ``` ## filesizeformat Formate une valeur numérique dans une taille de fichier lisible par l'homme (c.-à-d. 13 kB, 4,1 Mo, 102 octets, etc.). Par défaut, les préfixes décimaux sont utilisés (par exemple, MB et GB), mais vous pouvez définir le paramètre `binary` sur `true` pour utiliser des préfixes binaires tels que Mebi (MiB) et Gibi (GiB). ```text hubl.txt theme={null} {% set bytes = 10000 %} {{ bytes|filesizeformat(binary=true) }} ``` ```text sortie rendue.txt theme={null} 9.8 KiB ``` | Paramètre | Type | Description | | - | - | - | | `binary` | Booléen | S'il est défini sur `true`, des préfixes binaires sont utilisés, tels que Mebi (MiB) et Gibi (GiB). | ## first Renvoie le premier élément d'une séquence. ```text hubl.txt theme={null} {% set my_sequence = ["Item 1", "Item 2", "Item 3"] %} {{ my_sequence|first }} ``` ```text sortie rendue.txt theme={null} Item 1 ``` ## float Convertit la valeur en un nombre à virgule flottante. Si la conversion ne fonctionne pas, elle renvoie `0.0`. Vous pouvez remplacer cette valeur par défaut en utilisant le premier paramètre. ```text hubl.txt theme={null} {% set my_text="25" %} {{ my_text|float + 17 }} ``` ```text sortie rendue.txt theme={null} 42.0 ``` | Paramètre | Type | Description | | - | - | - | | `default` | Nombre | Nombre entier à renvoyer si la conversion ne fonctionne pas. | ## forceescape Applique strictement l'échappement HTML. Dans l'environnement de HubSpot, il n'y a pas vraiment de cas d'utilisation pour l'échappement double, donc cette option se comporte généralement de la même manière que le filtre escape. ```html example.html theme={null} {% set escape_string = "
This markup is printed as text
" %} {{ escape_string|forceescape }} ``` ```html example.html theme={null}
This markup is printed as text
``` ## format Applique le formatage des chaînes Python à un objet. `%s` peut être remplacé par une autre variable. ```text hubl.txt theme={null} {{ "Hi %s %s"|format(contact.firstname, contact.lastname) }} ``` ```text sortie rendue.txt theme={null} Hi Monty Python ``` ## format\_currency (obsolète) > [!WARNING] > > ### Remarque: > > ce filtre est [obsolète](/docs/cms/versions-deprecations/deprecated/hubl/filters-functions). Utilisez plutôt le filtre [format\_currency\_value](#format-currency-value). ## format\_currency\_value Formate un nombre donné sous forme de devise en fonction de la devise par défaut du portail et du paramètre régional transmis sous forme de paramètre. Remplace le filtre obsolète [format\_currency](/docs/cms/versions-deprecations/deprecated/hubl/filters-functions#format-currency). ```text hubl.txt theme={null} {{ 100 | format_currency_value(locale='en-GB', currency='EUR', maxDecimalDigits=6, minDecimalDigits=1) }} ``` ```text sortie rendue.txt theme={null} €100.0 ``` | Paramètre | Type | Description | | - | - | - | | `locale` | Chaîne | [La balise du langage local Java](https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html). La valeur par défaut est le paramètre `locale.Format : ISO639LanguageCodeInLowercase-ISO3166CountryCodeInUppercase` de la page. | | `currency` | Chaîne | Le [code alphabétique ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) de la devise, la valeur par défaut est la devise par défaut du portail. Les codes numériques ne sont pas acceptés. | | `minDecimalDigits` | Nombre | Le nombre minimum de décimales à inclure dans le résultat. Le nombre de décimales de la devise est utilisé par défaut. | | `maxDecimalDigits` | Nombre | Le nombre maximum de décimales à inclure dans le résultat. Le nombre de décimales de la devise est utilisé par défaut. | ## format\_date Formate le composant de date d'un objet de date. > [!WARNING] > > ### Remarque: > > vous devez uniquement utiliser ce filtre avec les variables qui renvoient une date. À compter du 30 septembre 2024, ce filtre ne renverra plus la date du jour lorsqu'une valeur nulle est transmise. Après cette date, une valeur nulle dans le filtre renverra la date 30 septembre 2024. ```text hubl.txt theme={null} {{ content.publish_date | format_date('long') }} {{ content.publish_date | format_date('yyyy.MMMM.dd') }} {{ content.publish_date | format_date('medium', 'America/New_York', 'de-DE') }} ``` ```text sortie rendue.txt theme={null} November 28, 2022 02022.November.28 28.11.2022 ``` | Paramètre | Type | Description | | - | - | - | | `format` | Modèle personnalisé `'short'` \|, `'medium'` \|, `'long'` \|, `'full'` \| | Le format à utiliser. Un modèle personnalisé reposant sur [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns). | | `timeZone` | Chaîne | Le fuseau horaire de la date de sortie au format [IANA TZDB](https://data.iana.org/time-zones/tzdb/). | | `locale` | Chaîne | Les paramètres régionaux à utiliser pour les formats reposant sur des paramètres régionaux. Voir la [liste des paramètres régionaux pris en charge](https://www.oracle.com/java/technologies/javase/java8locales.html). | ## format\_datetime Formate les composants de date et d'heure d'un objet de date. Ce filtre remplace le filtre obsolète [datetimeformat](/docs/cms/versions-deprecations/deprecated/hubl/filters-functions#datetimeformat-filter). Par défaut, renvoie une date et une heure dans le fuseau horaire UTC-00:00. > [!WARNING] > > ### Remarque: > > vous devez uniquement utiliser ce filtre avec les variables qui renvoient une date. À compter du 30 septembre 2024, ce filtre ne renverra plus la date du jour lorsqu'une valeur nulle est transmise. Après cette date, une valeur nulle dans le filtre renverra la date 30 septembre 2024. ```text hubl.txt theme={null} {{ content.publish_date | format_datetime('medium', 'America/New_York', 'de-DE') }} ``` ```text sortie rendue.txt theme={null} 12/31/69 7:00 PM ``` | Paramètre | Type | Description | | - | - | - | | `format` | Modèle personnalisé `'short'` \|, `'medium'` \|, `'long'` \|, `'full'` \| | Le format à utiliser. Un modèle personnalisé reposant sur [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns). En cas d'utilisation de `long` ou `full`, l'horodatage inclura un Z pour indiquer le décalage d'origine du fuseau UTC (c.-à-d. `2:23:00 PM Z`). Pour supprimer l'indicateur Z, spécifiez un attribut `timeZone`. | | `timeZone` | Chaîne | Le fuseau horaire de la date de sortie au format [IANA TZDB](https://data.iana.org/time-zones/tzdb/). Par défaut, renvoie l'heure UTC. | | `locale` | Chaîne | Les paramètres régionaux à utiliser pour les formats reposant sur des paramètres régionaux. Voir la [liste des paramètres régionaux pris en charge](https://www.oracle.com/java/technologies/javase/java8locales.html). | ## format\_number Formate un nombre donné en fonction d'un paramètre régional spécifié. Inclut un second paramètre qui définit la précision décimale maximale. ```text hubl.txt theme={null} {{ 1000|format_number('en-US') }} {{ 1000.333|format_number('fr') }} {{ 1000.333|format_number('en-US', 2) }} ``` ```text sortie rendue.txt theme={null} 1,000 1 000,333 1,000.33 ``` | Paramètre | Type | Description | | - | - | - | | `locale` | Chaîne | Les paramètres régionaux à utiliser pour le formatage. Voir la [liste des paramètres régionaux pris en charge](https://www.oracle.com/java/technologies/javase/java8locales.html). | | `maxDecimalDigits` | Nombre | Le nombre maximum de décimales à inclure dans le résultat. Par défaut, le nombre de chiffres décimaux de la valeur saisie est utilisé. | ## format\_time Formate le composant d'heure d'un objet de date. > [!WARNING] > > ### Remarque: > > vous devez uniquement utiliser ce filtre avec les variables qui renvoient une date. À compter du 30 septembre 2024, ce filtre ne renverra plus la date du jour lorsqu'une valeur nulle est transmise. Après cette date, une valeur nulle dans le filtre renverra la date 30 septembre 2024. ```text hubl.txt theme={null} {{ content.updated | format_time('long') }} {{ content.updated | format_time('hh:mm a') }} {{ content.updated | format_time('medium', 'America/New_York', 'de-DE') }} ``` ```text sortie rendue.txt theme={null} 3:25:06 PM Z 03:25 PM 10:25:44 ``` | Paramètre | Type | Description | | - | - | - | | `format` | Modèle personnalisé `'short'` \|, `'medium'` \|, `'long'` \|, `'full'` \| | Le format à utiliser. Un modèle personnalisé reposant sur [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns). En cas d'utilisation de `long` ou `full`, l'horodatage inclura un Z pour indiquer le décalage d'origine du fuseau UTC (c.-à-d. `2:23:00 PM Z`). Pour supprimer l'indicateur Z, spécifiez un attribut `timeZone`. | | `timeZone` | Chaîne | Le fuseau horaire de la date de sortie au format [IANA TZDB](https://data.iana.org/time-zones/tzdb/). Par défaut, renvoie l'heure UTC. | | `locale` | Chaîne | Les paramètres régionaux à utiliser pour les formats reposant sur des paramètres régionaux. Voir la [liste des paramètres régionaux pris en charge](https://www.oracle.com/java/technologies/javase/java8locales.html). | ## fromjson Convertit une chaîne JSON en un objet. ```text hubl.txt theme={null} {% set obj ='{ "name":"Brian","role":"Owner" }' %} {{ obj|fromjson }} ``` ```text sortie rendue.txt theme={null} {role=Owner, name=Brian} ``` ## geo\_distance Calcule la distance ellipsoïdale 2D entre deux points sur la Terre. ```text hubl.txt theme={null} {{ row.location | geo_distance(37.3435, -122.0344, "mi") }} MI ``` ```text sortie rendue.txt theme={null} 861.1655563461395 MI ``` ## groupby Regroupe une séquence d'objets selon un attribut commun. Le paramètre définit l'attribut commun pour le regroupement. ```html example.html theme={null}
    {% for group in contents|groupby("blog_post_author") %}
  • {{ group.grouper }}
      {% for content in group.list %}
    • {{ content.name }}
    • {% endfor %}
  • {% endfor %}
``` ```text sortie rendue.txt theme={null}
  • Blog author 1
    • Post by Blog author 1
    • Post by Blog author 1
    • Post by Blog author 1
  • Blog author 2
    • Post by Blog author 2
    • Post by Blog author 2
    • Post by Blog author 2
  • Blog author 3
    • Post by Blog author 3
    • Post by Blog author 3
    • Post by Blog author 3
``` | Paramètre | Description | | - | - | | `attribute` | L'attribut à utiliser pour le regroupement. | ## indent Met en retrait le texte dans une longueur de champ donnée en utilisant les espaces. Ce filtre n'est pas recommandé et n'est pas particulièrement utile, car le compilateur HTML de HubSpot élimine automatiquement les espaces blancs. Toutefois, il est inclus ici par souci d'exhaustivité. L'exemple ci-dessous montre un filtre `indent` appliqué à une variable dans une balise `
`, de sorte que les espaces blancs ne sont pas supprimés. Le premier paramètre contrôle la quantité d'espaces blancs et le second booléen permet d'indenter ou non la première ligne.

```html example.html theme={null}
{% set var = "string to indent" %}
{{ var|indent(2, true) }}
``` ```text sortie rendue.txt theme={null} string to indent ``` | Paramètre | Type | Description | | - | - | - | | `width` | Nombre | La quantité d'espaces blancs à appliquer. | | `indent-first` | Booléen | Lorsque cette option est définie sur `true`, la première ligne sera mise en retrait. | ## int Convertit la valeur en un nombre entier. Si la conversion ne fonctionne pas, elle renvoie `0`. Vous pouvez remplacer cette valeur par défaut en utilisant le premier paramètre. ```text hubl.txt theme={null} {% set string="25" %} {{ string|int + 17 }} ``` ```text sortie rendue.txt theme={null} 42 ``` | Paramètre | Type | Description | | - | - | - | | `default` | Nombre | Nombre entier à renvoyer si la conversion ne fonctionne pas. | ## intersect Renvoie l'intersection de deux ensembles ou listes. La liste renvoyée par le filtre contient tous les éléments uniques qui sont contenus dans les deux listes. ```text hubl.txt theme={null} {{ [1, 2, 3]|intersect([2, 3, 4, 5]) }} ``` ```text sortie rendue.txt theme={null} [2, 3] ``` | Paramètre | Type | Description | | - | - | - | | `list` | Tableau | La deuxième liste à comparer pour trouver l'intersection de la liste avec la liste originale. | ## ipaddr Évalue comme `true` si la valeur est une adresse IPv4 ou IPv6 valide. ```text hubl.txt theme={null} {% set ip = "1.0.0.1" %} {% if ip|ipaddr %} The string is a valid IP address {% endif %} ``` ```text sortie rendue.txt theme={null} The string is a valid IP address ``` ## join Renvoie une chaîne qui est la concaténation des chaînes de la séquence. Le séparateur entre les éléments est une chaîne vide par défaut, vous pouvez le définir avec le paramètre facultatif. Le deuxième paramètre peut être utilisé pour indiquer un attribut à joindre. ```text hubl.txt theme={null} {% set my_list = [1, 2, 3] %} {% set sep = "---" %} {{ my_list|join }} {{ my_list|join("|") }} {{ my_list|join(sep) }} ``` ```text sortie rendue.txt theme={null} 123 1|2|3 1---2---3 ``` | Paramètre | Type | Description | | - | - | - | | `delimiter` | Chaîne | Le délimiteur à utiliser lors de la concaténation de chaînes. | | `attribute` | Variable HubL | Attribut de valeur à joindre à un objet. | ## last Renvoie le dernier élément d'une séquence. ```text hubl.txt theme={null} {% set my_sequence = ["Item 1", "Item 2", "Item 3"] %} {% my_sequence|last %} ``` ```text sortie rendue.txt theme={null} Item 3 ``` ## length Renvoie le nombre d'éléments d'une séquence ou d'un mappage. ```text hubl.txt theme={null} {% set services = ["Web design", "SEO", "Inbound Marketing", "PPC"] %} {{ services|length }} ``` ```text sortie rendue.txt theme={null} 4 ``` ## list Convertit les valeurs en une liste. Les chaînes seront renvoyées sous forme de caractères distincts, sauf si elles sont contenues dans des délimiteurs de séquence entre crochets `[ ]`. ```text hubl.txt theme={null} {% set one = 1 %} {% set two = 2 %} {% set three = "three" %} {% set four = ["four"] %} {% set list_num = one|list + two|list + three|list + four|list %} {{ list_num }} ``` ```text sortie rendue.txt theme={null} [1, 2, t, h, r, e, e, four] ``` ## log Calcule le logarithme naturel d'un nombre. ```text hubl.txt theme={null} {{ 10|log }} {{ 65536|log(2) }} ``` ```text sortie rendue.txt theme={null} 2.302585092994046 16.0 ``` | Paramètre | Type | Description | | - | - | - | | `base` | Nombre | La base à utiliser pour le calcul du journal. | ## lower Convertit toutes les lettres d'une valeur en minuscules. ```text hubl.txt theme={null} {% set text="Text to MAKE LowercaSe" %} {{ text|lower }} ``` ```text sortie rendue.txt theme={null} text to make lowercase ``` ## map Applique un filtre sur une séquence d'objets ou recherche un attribut. C'est utile lorsque vous traitez une liste d'objets lorsque vous n'êtes réellement intéressé que par une certaine valeur de celle-ci. L'utilisation de base est le mappage d'un attribut. Par exemple, si vous voulez utiliser la logique conditionnelle pour vérifier si une valeur est présente dans un attribut particulier d'un dictionnaire. Vous pouvez également le laisser utiliser un filtre en transmettant le nom du filtre et les arguments après. ```text hubl.txt theme={null} {# Usage 1 #} Apply a filter to a sequence: {% set seq = ["item1", "item2", "item3"] %} {{ seq|map("upper") }} {# Usage 2 #} Look up an attribute: {{ content|map("currentState")}} ``` ```text sortie rendue.txt theme={null} Apply a filter to a sequence: [ITEM1, ITEM2, ITEM3] Look up an attribute: [DRAFT] ``` | Paramètre | Type | Description | | - | - | - | | `filter` | Chaîne | Filtre à appliquer à la séquence d'objets. | ## md5 Calcule le [hachage md5](https://en.wikipedia.org/wiki/MD5) de l'objet donné ```text hubl.txt theme={null} {{ content.absolute_url|md5 }} ``` ```text sortie rendue.txt theme={null} 923adb4ce05a4c6342c04c80be88d15e ``` ## minus\_time Soustrait un nombre d'heures à partir d'un objet datetime. ```text hubl.txt theme={null} {% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ date }} {{ date|minus_time(2, "months") }} ``` ```text sortie rendue.txt theme={null} 2018-07-14 14:31:30 2018-05-14 14:31:30 ``` | Paramètre | Type | Description | | - | - | - | | `diff` | Nombre | Montant à soustraire. | | `timeunit` | Chaîne | Les unités de temps valides sont `nanos`, `micros`, `millis`, `seconds`, `minutes`, `hours`, `half_days`, `days`, `weeks`, `months`, `years`, `decades`, `centuries`, `millennia` et `eras`. | ## multiply Multiplie une valeur par un nombre. Fonctionne de la même manière que l'[opérateur \*](/docs/cms/reference/hubl/operators-and-expression-tests). ```text hubl.txt theme={null} {% set n = 20 %} {{ n|multiply(3) }} ``` ```text sortie rendue.txt theme={null} 60 ``` ## plus\_time Ajoute un nombre d'heures à un objet datetime. ```text hubl.txt theme={null} {% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ date }} {{ date|plus_time(5, "days") }} ``` ```text sortie rendue.txt theme={null} 2018-07-14 14:31:30 2018-07-19 14:31:30 ``` | Paramètre | Type | Description | | - | - | - | | `diff` | Nombre | Montant à soustraire. | | `timeunit` | Chaîne | Les unités de temps valides sont `nanos`, `micros`, `millis`, `seconds`, `minutes`, `hours`, `half_days`, `days`, `weeks`, `months`, `years`, `decades`, `centuries`, `millennia` et `eras`. | ## pprint Impression d'une variable avec mise en forme. Ceci imprime le type de variable et d'autres informations utiles pour le débogage. ```text hubl.txt theme={null} {% set this_var ="Variable that I want to debug" %} {{ this_var|pprint }} ``` ```text sortie rendue.txt theme={null} (String: Variable that I want to debug) ``` ## random Renvoie un élément aléatoire de la séquence. > [!WARNING] > > ### Remarque: > > si vous utilisez ce filtre, la page sera [pré-rendue](/docs/cms/best-practices/testing-staging-performance/prerendering) périodiquement et non pas chaque fois que le contenu de la page est mis à jour. Cela signifie que le contenu filtré ne sera pas mis à jour à chaque rechargement de page. > > Cela peut ne pas être un problème pour certains types de contenu, tels que l'affichage d'une liste aléatoire d'articles de blog. Cependant, si vous souhaitez que le contenu change aléatoirement à chaque chargement de page, vous devez plutôt utiliser JavaScript pour rendre aléatoire le contenu côté client. ```text hubl.txt theme={null} {% for content in contents|random %}
Post item markup
{% endfor %} ``` ```text sortie rendue.txt theme={null}
Random post
``` ## regex\_replace Recherche un motif regex et le remplace par une séquence de caractères. Le premier argument est un motif regex de style RE2, le second est la chaîne de remplacement. Découvrez-en davantage sur la [syntaxe des regex RE2](https://github.com/google/re2/wiki/Syntax). ```text hubl.txt theme={null} {{ "contact-us-2"|regex_replace("[^a-zA-Z]", "") }} ``` ```text sortie rendue.txt theme={null} contactus ``` ## reject Filtre une séquence d'objets en appliquant un [test d'expression](/docs/cms/reference/hubl/operators-and-expression-tests) à l'objet et en rejetant ceux dont le test a réussi. ```text hubl.txt theme={null} {% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %} {{ some_numbers|reject("even") }} ``` ```text sortie rendue.txt theme={null} [13, 3, 5, 17] ``` | Paramètre | Type | Description | | - | - | - | | `exp_text` | Chaîne | Le nom du [test d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests) à appliquer à l'objet. | ## rejectattr Filtre une séquence d'objets en appliquant un test à l'attribut d'un objet et en rejetant ceux dont le test a réussi. ```html example.html theme={null} {% for content in contents|rejectattr("post_list_summary_featured_image") %}
{% if content.post_list_summary_featured_image %} {% endif %} {{ content.post_list_content|safe }}
{% endfor %} ``` ```html example.html theme={null}
Post with no featured image
Post with no featured image
Post with no featured image
``` | Paramètre | Type | Description | | - | - | - | | `attribute_name` | Chaîne | Indique l'attribut à sélectionner. Vous pouvez accéder aux attributs imbriqués en utilisant la notation par points. | | `exp_test` | Chaîne | Le nom du [test d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests) à appliquer à l'objet. | ## render Rend les chaînes contenant HubL au début afin que la sortie puisse être transmise dans d'autres filtres. ```html example.html theme={null} {{ personalization_token("contact.lastname", "default value")|render|lower }} ``` ```html example.html theme={null} mclaren ``` ## replace Remplace toutes les instances d'une sous-chaîne par une nouvelle. ```html example.html theme={null} {% if topic %}

Posts about {{ page_meta.html_title|replace("Blog | ", "") }}

{% endif %} ``` ```html example.html theme={null}

Posts about topic name

``` | Paramètre | Type | Description | | - | - | - | | `old` | Chaîne | La sous-chaîne qui doit être remplacée. | | `new` | Chaîne | Chaîne de remplacement. | | `count` | Nombre | Si ce paramètre est fourni, seules les occurrences du premier décompte sont remplacées. | ## reverse Inverse l'objet ou renvoie un itérateur qui parcours dans l'autre sens. Pour inverser une liste, utilisez [.reverse()](/docs/cms/reference/hubl/functions#reverse) ```text hubl.txt theme={null} {% set nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] %} {% for num in nums|reverse %} {{ num }} {% endfor %} ``` ```text sortie rendue.txt theme={null} 10 9 8 7 6 5 4 3 2 1 ``` ## root Calcule la racine carrée d'une valeur ```text hubl.txt theme={null} {{ 16|root }} {{ 625|root(4) }} ``` ```text sortie rendue.txt theme={null} 4 5 ``` | Paramètre | Type | Description | | - | - | - | | `nth_root` | Nombre | La racine nième à utiliser pour le calcul. | ## round Arrondit un nombre à une précision donnée. ```text hubl.txt theme={null} {{ 52.5|round }} {{ 52.5|round(0, "floor") }} ``` ```text sortie rendue.txt theme={null} 53 52 ``` | Paramètre | Type | Description | | - | - | - | | `precision` | Nombre | Indique la précision de l'arrondi. | | `rounding_method` | `'common'` (défaut) \| `'ceil'` \| `'floor'` | `common` arrondit vers le haut ou vers le bas (par défaut) ; `ceil` arrondit toujours vers le haut ; `floor` arrondit toujours vers le bas. | ## safe Marquer une valeur comme sûre, ce qui signifie que dans un environnement où l'échappement automatique est activé, cette variable ne sera pas échappée. ```text hubl.txt theme={null} {{ content.post_list_content|safe }} ``` ```html example.html theme={null}

HTML post content that is not escaped.

``` ## sanitize\_html Nettoie le contenu d'une entrée HTML pour la sortie de contenu en texte enrichi. Accepte une chaîne, puis supprime les balises HTML qui ne sont pas autorisées. Utilisez ce filtre pour les variables HubL utilisées en HTML qui devraient permettre un HTML sécurisé. Vous pouvez inclure les paramètres suivants pour autoriser des types spécifiques de balises HTML : `FORMATTING`, `BLOCKS`, `STYLES`, `LINKS`, `TABLES`. `IMAGES`. Par exemple : `sanitize_html(IMAGES)`. L'utilisation de `sanitize_html` inclura tous les paramètres dans le filtre. Vous pouvez également inclure un paramètre `STRIP` pour supprimer tout le HTML. Tout le contenu est également exécuté via `escape_jinjava` pour empêcher l'interprétation imbriquée. ```text hubl.txt theme={null} {% set escape_string = "This
markup is printed as text.
" %} {{ escape_string|sanitize_html("IMAGES") }} ``` ```html example.html theme={null} This markup is printed as text.
``` ## select Filtre une séquence d'objets en appliquant un test aux objets et en ne sélectionnant que ceux dont le test a réussi. ```text hubl.txt theme={null} {% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %} {{ some_numbers|select("even") }} ``` ```html example.html theme={null} [10, 12, 22] ``` | Paramètre | Type | Description | | - | - | - | | `exp_text` | Chaîne | Le test d'expression à appliquer à l'objet. | ## selectattr Filtre une séquence d'objets en appliquant un test à un attribut d'un objet et en ne sélectionnant que ceux dont le test a réussi. ```html example.html theme={null} {% for content in contents|selectattr("post_list_summary_featured_image") %}
{% if content.post_list_summary_featured_image %} {% endif %} {{ content.post_list_content|safe }}
{% endfor %} ``` ```html example.html theme={null}
Post with featured image
``` | Paramètre | Type | Description | | - | - | - | | `attribute_name` | Chaîne | L'attribut à tester. Vous pouvez accéder aux attributs imbriqués en utilisant la notation par points. | | `exp_test` | Chaîne | Le nom du [test d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests) à appliquer à l'objet. | | `val` | Chaîne | Valeur à tester. | ## shuffle Rend aléatoire l'ordre d'itération d'une séquence. L'exemple ci-dessous mélange une boucle de blog standard. > [!WARNING] > > ### Remarque: > > si vous utilisez ce filtre, la page sera [pré-rendue](/docs/cms/best-practices/testing-staging-performance/prerendering) périodiquement et non pas chaque fois que le contenu de la page est mis à jour. Cela signifie que le contenu filtré ne sera pas mis à jour à chaque rechargement de page. > > Cela peut ne pas être un problème pour certains types de contenu, tels que l'affichage d'une liste aléatoire d'articles de blog. Cependant, si vous souhaitez que le contenu change aléatoirement à chaque chargement de page, vous devez plutôt utiliser JavaScript pour rendre aléatoire le contenu côté client. ```html example.html theme={null} {% for content in contents|shuffle %}
Markup of each post
{% endfor %} ``` ```html example.html theme={null}
Markup of each post 5
Markup of each post 3
Markup of each post 1
Markup of each post 2
Markup of each post 4
``` ## slice Découpe un itérateur et renvoie une liste de listes contenant ces éléments. Le premier paramètre indique le nombre d'éléments qui seront découpés, et le second paramètre indique les caractères à utiliser pour remplir les tranches vides. ```html example.html theme={null} {% set items = ["laptops", "tablets", "smartphones", "smart watches", "TVs"] %}
{% for column in items|slice(3," ") %}
    {% for item in column %}
  • {{ item }}
  • {% endfor %}
{% endfor %}
``` ```html example.html theme={null}
  • laptops
  • tablets
  • smartphones
  • smart watches
  • TVs
``` | Paramètre | Type | Description | | - | - | - | | `slices` | Nombre | Combien d'éléments seront découpés. | | `filler` | Chaîne | Indique les caractères à utiliser pour remplir les tranches vides. | ## sort Trie une table itérative. Ce filtre nécessite que tous les paramètres soient triés en utilisant un attribut dans HubSpot. Le premier paramètre est un booléen pour inverser l'ordre de tri. Le deuxième paramètre détermine si le tri prend en compte la casse. Et le dernier paramètre indique l'attribut à utiliser pour le tri. Dans l'exemple ci-dessous, les articles d'un blog sont rendus et classés par ordre alphabétique de leur nom. ```html example.html theme={null} {% set my_posts = blog_recent_posts("default", limit=5) %} {% for item in my_posts|sort(False, False, "name") %} {{ item.name }}
{% endfor %} ``` ```html example.html theme={null} A post
B post
C post
D post
E post
``` | Paramètre | Type | Description | | - | - | - | | `reverse` | Booléen | À définir sur `true` pour inverser l'ordre de tri. | | `case_sensitive` | Booléen | À définir sur `true` pour rendre le tri sensible à la casse. | | `attribute` | Chaîne | Attribut à utiliser pour le tri. Omettre lors du tri d'une liste. | ## split Divise la chaîne d'entrée en une liste selon le séparateur donné. Le premier paramètre indique le séparateur avec lequel la variable doit être divisée. Le deuxième paramètre détermine combien de fois la variable doit être divisée. Tous les autres éléments restent groupés. Dans l'exemple ci-dessous, une chaîne de noms est séparée au niveau du `;` pour les quatre premiers noms. ```html example.html theme={null} {% set string_to_split = "Mark; Irving; Helly; Dylan; Milchick; Harmony;" %} {% set names = string_to_split|split(";", 4) %}
    {% for name in names %}
  • {{ name }}
  • {% endfor %}
``` ```html example.html theme={null}
  • Mark
  • Irving
  • Helly
  • Dylan; Milchick; Harmony;
``` | Paramètre | Type | Description | | - | - | - | | `character_to_split_by` | Chaîne | Indique le séparateur avec lequel la variable doit être divisée. | | `number_of_splits` | Nombre | Détermine le nombre de fois que la variable doit être divisée. Tous les autres éléments resteraient groupés. | ## chaîne Convertit un type de variable différent en une chaîne. Dans l'exemple ci-dessous, un entier est converti en chaîne (`pprint` est utilisé pour confirmer le changement de type de variable). ```text hubl.txt theme={null} {% set number_to_string = 45 %} {{ number_to_string|string|pprint }} ``` ```text sortie rendue.txt theme={null} (String: 45) ``` ## striptags Efface les balises SGML/XML et remplace les espaces blancs adjacents par un espace. Ce filtre peut être utilisé pour supprimer toutes les balises HTML d'une variable. ```html example.html theme={null} {% set some_html = "
Some text
" %} {{ some_html|striptags }} ``` ```html example.html theme={null} some text ``` ## strtodate Convertit une chaîne de date et un format de date en un objet de date. ```text hubl.txt theme={null} {{ '3/3/21'|strtodate('M/d/yy') }} ``` ```text sortie rendue.txt theme={null} 2021-03-03 00:00:00 ``` | Paramètre | Type | Description | | - | - | - | | `dateFormat` | Chaîne | Le [format de date](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) à utiliser. | ## strtotime Convertit une chaîne datetime et un format datetime en un objet datetime. ```text hubl.txt theme={null} {{ "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ")|unixtimestamp }} ``` ```text sortie rendue.txt theme={null} 1531558890000 ``` | Paramètre | Type | Description | | - | - | - | | `datetimeFormat` | Chaîne | Le [format de date et d'heure](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) à utiliser. | ## sum Ajoute des valeurs numériques dans une séquence. Le premier paramètre peut indiquer un attribut facultatif et le second paramètre définit une valeur à renvoyer s'il n'y a rien dans la variable à additionner. ```text hubl.txt theme={null} // Simple sum {% set sum_this = [1, 2, 3, 4, 5] %} {{ sum_this|sum }} // Sum of attribute {% set items = [15, 10] %} {% set dict_var = [{"name": "Item1", "price": "20"}, {"name": "Item2", "price": "10"}] %} Total: {{ dict_var|sum(attribute="price") }} ``` ```text sortie rendue.txt theme={null} 15 Total: 30 ``` | Paramètre | Type | Description | | - | - | - | | `attribute` | Chaîne | Attribut à additionner. | | `return_if_nothing` | Chaîne | Valeur à renvoyer s'il n'y a rien dans la variable à additionner. | ## symmetric\_difference Renvoie la différence symétrique de deux ensembles ou listes. La liste renvoyée par le filtre contient tous les éléments uniques qui figurent dans la première liste, mais pas dans la seconde, ou qui figurent dans la seconde liste, mais pas dans la première. ```text hubl.txt theme={null} {{ [1, 2, 3]|symmetric_difference([2, 3, 4, 5]) }} ``` ```text sortie rendue.txt theme={null} [1, 4, 5] ``` | Paramètre | Type | Description | | - | - | - | | `list` | Tableau | La deuxième liste à comparer pour trouver la différence symétrique avec la liste originale. | ## title Renvoie une version au format titre de la valeur (c'est-à-dire que les mots commencent par des lettres majuscules mais que tous les autres caractères sont des minuscules). ```text hubl.txt theme={null} {% set my_title="my title should be title case" %} {{ my_title|title }} ``` ```text sortie rendue.txt theme={null} My Title Should Be Title Case ``` ## tojson Écrit un objet sous forme de chaîne JSON. ```text hubl.txt theme={null} {% for content in contents %} {{ content.blog_post_author|tojson }} {% endfor %} ``` ```json example.json theme={null} { "portalId": 1234567, "id": 12312253109, "created": 1566413741989, "updated": 1566414012799, "deletedAt": 0, "fullName": "Sample User", "email": "sampleUser@example.com", "userId": null, "username": null, "slug": "sample-user", "jsonBody": { "avatar": "https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a", "bio": "Sample Bio", "facebook": "", "linkedin": "", "twitter": "", "website": "https://www.hubspot.com" }, "bio": "Sample Bio", "facebook": "", "linkedin": "", "avatar": "https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a", "gravatarUrl": "https://app.hubspot.com/settings/avatar/108bb5ac667ded34796271437dfe8d58", "twitterUsername": "", "hasSocialProfiles": false, "website": "https://www.hubspot.com", "twitter": "", "displayName": "Sample User" } ``` ## trim Supprime les espaces blancs de début et de fin. HubSpot supprime déjà les espaces blancs du balisage, mais ce filtre est documenté par souci d'exhaustivité. ```text hubl.txt theme={null} {{ " remove whitespace " }} {{ " remove whitespace "|trim }} ``` ```text sortie rendue.txt theme={null} remove whitespace remove whitespace ``` ## truncate Coupe le texte après un certain nombre de caractères. La valeur par défaut est 255. Les caractères HTML sont inclus dans ce décompte. > [!WARNING] > > **Remarque :** comme ce filtre s'appuie sur les espaces entre les mots pour raccourcir les chaînes, il se peut qu'elle ne fonctionne pas comme prévu pour les langues sans espace entre caractères, comme le japonais. ```text hubl.txt theme={null} {{ "I only want to show the first sentence. Not the second."|truncate(40) }} {{ "I only want to show the first sentence. Not the second."|truncate(35, true, "..........") }} ``` ```text sortie rendue.txt theme={null} I only want to show the first sente.......... ``` | Paramètre | Type | Description | | - | - | - | | `number_of_characters` | Nombre | Nombre de caractères autorisés avant que le texte ne soit tronqué. La valeur par défaut est 255. | | `breakword` | Booléen | Si `true`, le filtre coupe le texte en longueur. Si `false`, le dernier mot est supprimé. | | `end` | Chaîne | Remplace les caractères de fin par « ... » par défaut après la troncature. | ## truncatehtml Tronque une chaîne donnée, en respectant le balisage HTML (c'est-à-dire qu'il fermera correctement toutes les balises imbriquées). Cela empêchera une balise de rester ouverte après la troncature. Les caractères HTML ne sont pas pris en compte dans le total des caractères. > [!WARNING] > > **Remarque :** comme ce filtre s'appuie sur les espaces entre les mots pour raccourcir les chaînes, il se peut qu'elle ne fonctionne pas comme prévu pour les langues sans espace entre caractères, comme le japonais. ```html example.html theme={null} {% set html_text = "

I want to truncate this text without breaking my HTML

" %} {{ html_text|truncatehtml(28, "..." , false) }} ``` ```html example.html theme={null}

I want to truncate this..

``` | Paramètre | Type | Description | | - | - | - | | `number_of_characters` | Nombre | Nombre de caractères autorisés avant que le texte ne soit tronqué. La valeur par défaut est 255. | | `end` | Chaîne | Remplace les caractères de fin par « ... » par défaut après la troncature. | | `breakword` | Booléen | Valeur booléenne. Si `true`, le filtre coupe le texte en longueur. Si `false` (par défaut), le dernier mot est supprimé. Si vous n'utilisez qu'un seul des paramètres facultatifs, utilisez des arguments de type mot-clé, comme `truncatehtml(70, breakwords = false)`. | ## unescape\_html Convertit le texte avec des entités codées en HTML en leurs équivalents Unicode. ```text hubl.txt theme={null} {% set escape_string = "me & you" %} {{ escape_string|unescape_html }} ``` ```text sortie rendue.txt theme={null} me & you ``` ## union Renvoie l'union de deux ensembles ou listes. La liste renvoyée par le filtre contient tous les éléments uniques qui se trouvent dans l'une ou l'autre des listes. ```text hubl.txt theme={null} {{ [1, 2, 3]|union([2, 3, 4, 5]) }} ``` ```text sortie rendue.txt theme={null} [1, 2, 3, 4, 5] ``` | Paramètre | Type | Description | | - | - | - | | `list` | Tableau | La deuxième liste à joindre à la liste originale. | ## unique Extrait un ensemble unique d'une séquence ou d'un dictionnaire d'objets. Lors du filtrage d'un dictionnaire, tel qu'une liste d'articles renvoyée par une fonction, vous pouvez indiquer quel attribut est utilisé pour dédupliquer les éléments du dictionnaire. ```text hubl.txt theme={null} {% set my_sequence = ["one", "one", "two", "three" ] %} {{ my_sequence|unique }} ``` ```text sortie rendue.txt theme={null} [one, two, three] ``` | Paramètre | Type | Description | | - | - | - | | `attr` | Chaîne | Indique l'attribut qui doit être utilisé lors du filtrage d'une valeur dictionnaire. | ## unixtimestamp Ce filtre convertit un objet datetime en un horodatage unix. > [!WARNING] > > ### Remarque: > > vous devez uniquement utiliser ce filtre avec les variables qui renvoient une date. À compter du 30 septembre 2024, ce filtre ne renverra plus la date du jour lorsqu'une valeur nulle est transmise. Après cette date, une valeur nulle dans le filtre renverra la date 30 septembre 2024. ```text hubl.txt theme={null} {{ local_dt }} {{ local_dt|unixtimestamp }} ``` ```text sortie rendue.txt theme={null} 2017-01-30 17:11:44 1485814304000 ``` ## upper Convertit toutes les lettres d'une valeur en majuscules. ```text hubl.txt theme={null} {% set text="text to make uppercase" %} {{ text|upper }} ``` ```text sortie rendue.txt theme={null} TEXT TO MAKE UPPERCASE ``` ## urlencode Quitte et encode l'URL d'une chaîne utilisant le formatage UTF-8. Accepte à la fois les dictionnaires et les chaînes régulières ainsi que les itérables par paire. ```text hubl.txt theme={null} {% set encode_value="Escape & URL encode this string" %} {{ encode_value|urlencode }} ``` ```text sortie rendue.txt theme={null} Escape+%26+URL+encode+this+string ``` ## urldecode Décode les chaînes d'URL encodées vers l'URL d'origine. Accepte à la fois les dictionnaires et les chaînes régulières ainsi que les itérables par paire. ```text hubl.txt theme={null} {% set decode_value="Escape+%26+URL+decode+this+string" %} {{ decode_value|urldecode }} ``` ```text sortie rendue.txt theme={null} Escape & URL decode this string ``` ## urlize Convertit les URL en texte brut en liens cliquables. Si vous transmettez au filtre un nombre entier supplémentaire, il raccourcira les URL à ce nombre. Le deuxième paramètre est un booléen qui indique si le lien est rel="no follow". Le dernier paramètre vous permet de préciser si le lien s'ouvrira dans un nouvel onglet. | Paramètre | Type | Description | | - | - | - | | `shorten_text` | Nombre | Nombre entier qui raccourcira les URL au nombre désiré. | | `no_follow` | Booléen | Lorsqu'il est défini sur `true`, le lien inclura `rel="no follow"`. | | `target="_blank"` | Chaîne | Indique si le lien s'ouvrira dans un nouvel onglet. | ```text hubl.txt theme={null} {{ "http://hubspot.com/"|urlize }} {{ "http://hubspot.com/"|urlize(10,true) }} {{ "http://hubspot.com/"|urlize("",true) }} {{ "http://hubspot.com/"|urlize("",false,target="_blank") }} ``` ```html example.html theme={null} http://hubspot.com/ http://... http://hubspot.com/ http://hubspot.com/ ``` ## wordcount Compte le nombre de mots dans une chaîne. > [!WARNING] > > Si la chaîne contient du HTML, utilisez le filtre `striptags` pour obtenir un compte précis. ```text hubl.txt theme={null} {% set count_words = "Count the number of words in this variable" %} {{ count_words|wordcount }} ``` ```text sortie rendue.txt theme={null} 8 ``` ## wordwrap Provoque le retour à la ligne des mots après un nombre de caractères donné. Cela fonctionne mieux dans un `
` car HubSpot supprime les espaces blancs par défaut.

```text hubl.txt theme={null}
{% set wrap_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet dui. Ut laoreet ultricies quam at fermentum." %}
{{ wrap_text|wordwrap(10) }}
```

```text sortie rendue.txt theme={null}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum
non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet
dui. Ut laoreet ultricies quam at fermentum.
```

| Paramètre | Description |
| - | - |
| `character_count` | Nombre de caractères avec le retour à la ligne du contenu. |

## xmlattr

Crée une chaîne d'attributs HTML/XML, basée sur les éléments d'un dictionnaire. Toutes les valeurs qui ne sont ni nulles ni indéfinies sont automatiquement échappées. Il ajoute automatiquement un espace devant l'élément si le filtre renvoie quelque chose, sauf si le premier paramètre est false.

```html example.html theme={null}
{% set html_attributes = {"class": "bold", "id": "sidebar"} %}
``` ```html example.html theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `autospace` | Booléen | À définir sur `true` pour ajouter un espace devant l'élément. | # Fonctions HubL Source: https://developers.hubspot.fr/docs/cms/reference/hubl/functions Un listing de référence de toutes les fonctions HubL disponibles. Les fonctions dans HubL sont similaires aux filtres car elles acceptent des paramètres et génèrent une valeur. Cependant, toutes les fonctions n'ont pas besoin d'être appliquées à une valeur de modèle initiale, mais interagissent avec d'autres zones de votre environnement HubSpot. Si vous gérez un site web plus ancien, vous pouvez également consulter la [liste des fonctions HubL obsolètes](/docs/cms/versions-deprecations/deprecated/hubl/filters-functions). Découvrez ci-dessous chaque fonction HubL et sa syntaxe. ## append Ajoute un seul élément à la fin d'une liste. ```text hubl.txt theme={null} {% set numbers_under_5 = [1,2,3] %} {% do numbers_under_5.append(4) %} {{numbers_under_5}} ``` ```text sortie rendue.txt theme={null} [1, 2, 3, 4] ``` | Paramètre | Type | Description | | - | - | - | | `item` | Tout | Élément à ajouter à la liste. | ## blog\_all\_posts\_url La fonction `blog_all_posts_url` renvoie une URL complète vers la page de listing de tous les articles du blog indiqué. L'exemple ci-dessous montre comment cette fonction peut être utilisée comme `href` d'une ancre. ```html example.html theme={null} All Marketing blog posts ``` ```html example.html theme={null} All Marketing blog posts ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | ## blog\_author\_url La fonction `blog_author_url` renvoie une URL complète vers la page de listing de l'auteur du blog indiqué. L'exemple ci-dessous montre comment cette fonction peut être utilisée comme `href` d'une ancre. Cette fonction peut être combinée avec `blog_authors` comme le montrent les exemples de cette fonction. ```html example.html theme={null} Brian Halligan ``` ```html example.html theme={null} Brian Halligan ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Spécifie le blog dans lequel se trouve la page de listing de l'auteur. Vous pouvez spécifier un blog par ID ou utiliser `"default"` pour sélectionner le blog par défaut. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `author_slug` | Chaîne ou variable HubL | Indique l'auteur vers lequel le lien doit être établi. Peut utiliser soit `content.blog_post_author.slug` ou un nom en minuscule avec un trait d'union. Exemple : `"jane-doe"`. | ## blog\_authors La fonction `blog_authors` renvoie une séquence d'objets auteurs de blog pour le blog indiqué, triés par slug en ordre croissant. Cette séquence peut être stockée dans une variable et être parcourue pour créer des filtres d'articles d'auteurs personnalisés. Le nombre d'articles publiés par chaque auteur peut être consulté avec `author.live_posts`. > [!WARNING] > > **Remarque :** cette fonction est limitée à 250 auteurs. Cette fonction est également limitée à 10 appels par page. La première ligne de l'exemple ci-dessous montre comment la fonction renvoie une séquence d'objets auteur. La suite de l'exemple montre un cas d'utilisation consistant à enregistrer une séquence dans une variable, puis à parcourir les objets auteur, en imprimant un ensemble de liens de listing d'auteurs. L'exemple suppose que le blog a 4 auteurs. ```html example.html theme={null} {{ blog_authors("default", 250) }} {% set my_authors = blog_authors("default", 250) %} ``` ```html example.html theme={null} [ Brian Halligan, Dharmesh Shah, Katie Burke, Kipp Bodnar] ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `limit` | Entier | Définit la limite du nombre d'auteurs récupérés. | ## blog\_by\_id La fonction `blog_by_id` renvoie un blog selon l'ID. L'exemple de code ci-dessous montre l'utilisation de cette fonction pour générer un élément de liste avec lien hypertexte. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```html example.html theme={null} {% set my_blog = blog_by_id(47104297) %} ``` ```html example.html theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | ## blog\_page\_link La fonction `blog_page_link` génère l'URL d'une vue paginée du listing de votre blog. La fonction prend un paramètre numérique, qui vous permet de générer des liens pour la page actuelle, suivante, précédente ou une page spécifique. Cette fonction est généralement utilisée dans l'attribut `href` des balises d'ancrage de la pagination et doit être utilisée sur le modèle de listing de votre blog. Les exemples ci-dessous montrent cette fonction utilisée comme un `href` d'ancre. Le premier exemple affiche la page actuelle. Le deuxième exemple utilise le paramètre numéro 7 pour la septième page. Le troisième exemple utilise la variable `next_page_num` pour générer un lien relatif au numéro de la page actuelle (vous pouvez également utiliser la variable `last_page_num` pour la page précédente). Le dernier exemple utilise la variable `current_page_num` et un opérateur `+` pour créer un lien supérieur de 4 à la page actuelle. ```html example.html theme={null} Current page Page 7 Next Page Plus 4 ``` ```html example.html theme={null} Page 1 Page 7 Next Page Plus 4 ``` | Paramètre | Type | Description | | - | - | - | | `page` | Nombre ou variable HubL | Numéro de page utilisé pour générer l'URL ou la variable HubL pour le numéro de page. | ## blog\_popular\_posts Cette fonction rend un nombre déterminé d'articles populaires en une séquence. La séquence peut ensuite être enregistrée dans une variable et être parcourue par une boucle for, créant un listing personnalisé de vos articles les plus populaires. Les résultats de cette fonction sont mis en cache pendant six heures. Pour récupérer des articles de blog en utilisant HubL d'une manière qui évite la mise en cache, vous pouvez utiliser [blog\_recent\_tag\_posts](#blog-recent-tag-posts) à la place. Dans l'exemple de code ci-dessous, la première ligne montre comment la fonction renvoie une séquence. La séquence est enregistrée en tant que variable qui est ensuite utilisée dans une [boucle for](/docs/cms/reference/hubl/loops). [Toute variable d'article de blog](/docs/cms/reference/hubl/variables#blog-variables) doit utiliser le nom de l'élément individuel de la boucle plutôt que `content.`. Dans l'exemple, `pop_post.name` est utilisé. Cette technique peut être utilisée sur les modèles de blog et les pages de site web. > [!WARNING] > > **Remarque :** cette fonction est limitée à 200 articles. Cette fonction est également limitée à 10 appels par page. ```html example.html theme={null} {% set pop_posts = blog_popular_posts("default", 5, ["marketing-tips", "sales-tips"], "popular_past_month", "AND") %} {% for pop_post in pop_posts %}
{{ pop_post.name }}
{% endfor %} ``` ```html example.html theme={null} [Popular post title 1, Popular post title 2, Popular post title 3, Popular post title 4, Popular post title 5]
Popular post title 1
Popular post title 2
Popular post title 3
Popular post title 4
Popular post title 5
``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. | | `limit` | Entier | Indique le nombre d'articles à ajouter à la séquence jusqu'à une limite de 200. Si elle n'est pas spécifiée, la valeur par défaut est 10. | | `tag_slug` | Tableau | Liste facultative de balises permettant de filtrer les articles. | | `time_frame` | Chaîne | Période d'analyse facultative pour filtrer les articles. La valeur par défaut est `"popular_past_year"`. Doit être l'un des éléments suivants :
  • `"popular_all_time"`
  • `"popular_past_year"`
  • `"popular_past_six_months"`
  • `"popular_past_month"`
Ce paramètre est obligatoire lors de l'inclusion du paramètre `logical_operator`. | | `logical_operator` | Chaîne | Lorsque `tag_slug` contient plusieurs balises, utilisez cet opérateur pour filtrer les résultats avec la logique `AND` ou `OR`. Par défaut, cette fonction utilise la logique `OR` pour renvoyer les publications étiquetées avec l'une des balises spécifiées. Lorsque vous incluez ce paramètre, `time_frame` est requis. | ## blog\_post\_archive\_url La fonction `blog_post_archive_url` renvoie une URL complète vers la page de listing des archives pour les valeurs de date données sur le blog indiqué. Cette fonction comporte deux paramètres obligatoires et deux paramètres facultatifs. Le premier paramètre est un ID de blog ou simplement le mot clé `"default"`. Le second est l'année des articles archivés que vous souhaitez afficher. Les paramètres facultatifs comprennent le mois et le jour des archives archivés que vous souhaitez afficher, respectivement. L'exemple ci-dessous montre comment cette fonction peut être utilisée comme `href` d'une ancre. ```html example.html theme={null} Posts from July 5th, 2017 ``` ```html example.html theme={null} Posts from July 5th, 2017 ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. | | `year` | Entier | L'année. | | `month` | Entier | Le mois facultatif. | | `day` | Entier | Le jour facultatif. | ## blog\_recent\_author\_posts La fonction `blog_recent_author_posts` renvoie une séquence d'objets d'article de blog pour l'auteur indiqué, triés en commençant par le plus récent. Cette séquence d'articles peut être enregistrée dans une variable et être parcourue par une boucle for, créant un listing d'articles personnalisé d'un auteur particulier. La fonction prend trois paramètres. Le premier paramètre indique à partir de quel blog collecter les articles d'un auteur. La valeur doit être `"default"` ou l'ID d'un blog particulier (disponible dans l'URL du tableau de bord Blog) Le deuxième paramètre indique l'auteur à utiliser. Ce paramètre peut utiliser la balise **`content.blog_post_author.slug`** pour utiliser l'auteur de l'article actuel ou accepter un nom en minuscule avec trait d'union tel que `"brian-halligan"`. Le troisième paramètre indique combien d'articles sont récupérés. La première ligne de l'exemple ci-dessous montre comment la fonction renvoie une séquence d'articles d'un auteur. Dans cet exemple, plutôt que d'indiquer un nom d'auteur exact, l'auteur actuel de l'article est utilisé. La séquence est enregistrée dans une variable et parcourue en boucle. [Toute variable d'article de blog](/docs/cms/reference/hubl/variables#blog-variables) doit utiliser le nom de l'élément individuel de la boucle plutôt que `content.`. Dans l'exemple, `author_post.name` est utilisé. Cette technique peut être utilisée sur les modèles de blog et de page. > [!WARNING] > > **Remarque :** cette fonction est limitée à 200 articles et à 10 appels par page. ```html example.html theme={null} {{ blog_recent_author_posts("default", content.blog_post_author.slug, 5 ) }} {% set author_posts = blog_recent_author_posts("default", content.blog_post_author.slug, 5) %} {% for author_post in author_posts %}
{{ author_post.name }}
{% endfor %} ``` ```html example.html theme={null} [Post by author title 1, Post by author title 2, Post by author title 3, Post by author title 4, Post by author title 5]
Post by author title 1
Post by author title 2
Post by author title 3
Post by author title 4
Post by author title 5
``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `author_slug` | Chaîne | Indique l'auteur sur lequel le filtre doit porter. | | `limit` | Entier | Indique le nombre d'articles à ajouter à la séquence jusqu'à une limite de 200. | ## blog\_recent\_posts La fonction `blog_recent_posts` renvoie une séquence d'objets d'articles de blog pour le blog indiqué, triés en commençant par le plus récent. Cette séquence d'articles peut être enregistrée dans une variable et être parcourue par une boucle for, créant un listing personnalisé de vos articles les plus populaires. La fonction prend deux paramètres. Le premier paramètre indique le blog à partir duquel collecter les articles populaires. La valeur doit être `"default"` ou l'ID d'un blog particulier (disponible dans l'URL du tableau de bord Blog) Le deuxième paramètre indique le nombre d'articles à récupérer. La première ligne de l'exemple ci-dessous montre comment la fonction renvoie une séquence. La séquence est enregistrée dans une variable et parcourue en boucle. [Toute variable d'article de blog](/docs/cms/reference/hubl/variables#blog-variables) doit utiliser le nom de l'élément individuel de la boucle plutôt que `content.`. Dans l'exemple, `rec_post.name` est utilisé. Cette technique peut être utilisée, non seulement sur les modèles de blog, mais aussi sur les pages ordinaires. > [!WARNING] > > **Remarque :** cette fonction est limitée à 200 articles et à 10 appels par page. ```html example.html theme={null} {{ blog_recent_posts("default", 5) }} {% set rec_posts = blog_recent_posts("default", 5) %} {% for rec_post in rec_posts %}
{{ rec_post.name }}
{% endfor %} ``` ```html example.html theme={null} [Recent post title 1, Recent post title 2, Recent post title 3, Recent post title 4, Recent post title 5]
Recent post title 1
Recent post title 2
Recent post title 3
Recent post title 4
Recent post title 5
``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `limit` | Entier | Indique le nombre d'articles à ajouter à la séquence, au maximum 200. | ## blog\_recent\_tag\_posts La fonction `blog_recent_tag_posts` renvoie une séquence d'objets d'articles de blog pour une ou plusieurs balises indiquées, triés en commençant par le plus récent. Cette séquence d'articles peut être enregistrée dans une variable et être parcourue par une boucle for, créant un listing d'articles personnalisé d'une ou plusieurs balises particulières. Dans l'exemple de code ci-dessous : * La première ligne montre comment la fonction renvoie une séquence d'articles par balise. * La deuxième ligne montre comment enregistrer la fonction dans une variable de séquence. Le reste du code utilise ensuite une boucle for pour parcourir les valeurs de la variable. [Toute variable d'article de blog](/docs/cms/reference/hubl/variables#blog-variables) doit utiliser le nom de l'élément individuel de la boucle plutôt que `content.`. Dans l'exemple, `tag_post.name` est utilisé. Vous pouvez utiliser cette technique sur les pages de blog et de site web. Découvrez-en davantage sur la [création d'une liste d'articles de blog connexes](/docs/cms/reference/hubl/tags/related-blog-posts). > [!WARNING] > > **Remarque :** cette fonction est limitée à 100 articles et à 10 appels par page. ```html example.html theme={null} {{ blog_recent_tag_posts("default", "marketing-tips", 5) }} {% set tag_posts = blog_recent_tag_posts("default", ["marketing", "fun", "inbound"], 3, "AND") %} {% for tag_post in tag_posts %}
{{ tag_post.name }}
{% endfor %} ``` ```html example.html theme={null} [Post about Marketing 1, Post about Marketing 2, Post about Marketing 3, Post about Marketing 4, Post about Marketing 5]
Post about Marketing
Post about Fun
Post about Inbound
``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `tag_slug` | Chaîne | Indique la balise sur laquelle le filtre doit porter. Vous pouvez inclure jusqu'à 10 balises, séparées par des virgules. Les balises avec plusieurs mots doivent être en minuscules avec des espaces remplacées par des traits d'union. | | `limit` | Entier | Indique le nombre d'articles à ajouter à la séquence. Ce paramètre est obligatoire lors de l'inclusion d'un paramètre `logical_operator`. | | `logical_operator` | Chaîne | Lorsque `tag_slug` contient plusieurs balises, utilisez cet opérateur pour filtrer les résultats avec la logique `AND` ou `OR`. Par défaut, cette fonction utilise la logique `OR` pour renvoyer les publications étiquetées avec l'une des balises spécifiées. Lorsque vous incluez ce paramètre, `limit` est requis. | ## blog\_tag\_url La fonction `blog_tag_url` renvoie une URL complète vers la page de listing de la balise du blog indiquée. Cette fonction accepte deux paramètres. Le premier paramètre indique dans quel blog se trouve la page de listing de la balise. Le deuxième paramètre indique la balise à mettre en lien. Ce paramètre peut utiliser **`topic.slug`** pour une balise particulière de `content.topic_list` ou accepter un nom en minuscule avec un trait d'union tel que `"marketing-tips"`. L'exemple ci-dessous montre comment cette fonction peut être utilisée comme href d'une ancre. ```html example.html theme={null} Inbound Marketing ``` ```html example.html theme={null} Inbound Marketing ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser, soit un blog spécifique selon son ID, soit le blog par défaut avec `"default"`. | | `tag_slug` | Chaîne | Indique la balise vers laquelle le lien doit être établi. | ## blog\_tags La fonction `blog_tags` renvoie une séquence des 250 balises les plus présentes dans les blogs (en fonction du nombre d'articles de blog associés) pour le blog indiqué, triées par nombre d'articles de blog.Cette séquence peut être stockée dans une variable et être parcourue pour créer des filtres d'articles de balises personnalisés. Le nombre d'articles pour chaque balise peut être consulté avec `tag.live_posts`. Cette fonction accepte deux paramètres. Le premier paramètre indique le blog à partir duquel récupérer les balises. Le deuxième paramètre fixe une limite au nombre de balises récupérées. La première ligne de l'exemple ci-dessous montre comment la fonction renvoie une séquence d'objets balises. La suite de l'exemple montre un cas d'utilisation consistant à enregistrer une séquence dans une variable, puis à parcourir les objets balise, en imprimant un ensemble de liens de balise. L'exemple suppose que le blog a 4 balises. > [!WARNING] > > **Remarque :** cette fonction est limitée à 250 balises. ```html example.html theme={null} {{ blog_tags("default", 250) }} {% set my_tags = blog_tags("default", 250) %}
    {% for item in my_tags %}
  • {{ item }}
  • {% endfor %}
``` ```html example.html theme={null} [ Blogging, Inbound Marketing, SEO, Social Media] ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à utiliser. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | | `limit` | Entier | Le nombre maximum de balises à renvoyer. | ## blog\_total\_post\_count Cette fonction renvoie le nombre total d'articles publiés dans le blog indiqué. Si aucun paramètre n'est indiqué, il comptera les articles de votre blog par défaut. Vous pouvez également indiquer `"default"` ou l'ID d'un blog différent à comptabiliser. L'ID du blog est disponible dans l'URL de votre tableau de bord pour un blog particulier. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```text hubl.txt theme={null} {{ blog_total_post_count }} {{ blog_total_post_count(359485112) }} ``` ```text sortie rendue.txt theme={null} 16 54 ``` | Paramètre | Type | Description | | - | - | - | | `selected_blog` | ID du blog ou "default" | Indique le blog à comptabiliser. L'ID du blog est renvoyé selon le [champ blog du module](/docs/cms/reference/fields/module-theme-fields#blog). | ## clear Supprime tous les éléments d'une liste. Contrairement à `pop()`, il ne renvoie rien. ```text hubl.txt theme={null} {% set words = ["phone","home"] %} {% do words.clear() %} {{words}} ``` ```text sortie rendue.txt theme={null} [] ``` ## color\_contrast Cette fonction valide le contraste des couleurs en fonction des [normes WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum). Vous devrez inclure deux couleurs comme arguments, et vous pouvez inclure un argument facultatif pour spécifier l'évaluation (`AA` ou `AAA`). Renvoie `true` ou `false` selon que les couleurs respectent/dépassent la norme. ```text hubl.txt theme={null} {{color_contrast('#FFFFFF','#273749')}} {{color_contrast('rgb(255, 255, 255)','rgb(229, 237, 245)','AAA')}}

Hey there

``` ```text sortie rendue.txt theme={null} true false Hey there ``` | Paramètre | Type | Description | | - | - | - | | `color_1` | Couleur | La première couleur à comparer. Accepte :
  • les codes hexadécimaux à 6 chiffres (`#FFFFFF`)
  • les codes hexadécimaux à 3 chiffres (`#F0A`)
  • les codes couleur RVB (`rgb(12,31,1)`)
Peut également utiliser une variable qui stocke un code de couleur hexadécimal ou RVB. Par exemple :`theme.primary_color.color` | | `color_2` | Couleur | La deuxième couleur à comparer à la première. | | `rating` | Chaîne | La norme WCAG à utiliser pour l'évaluation. Peut être soit `AA` (par défaut) ou `AAA`. | ## color\_variant Cette fonction éclaircit ou assombrit une valeur hex ou une variable couleur d'une quantité définie. Le premier paramètre est la couleur hex (par exemple ("#FFDDFF") ou une variable stockant une valeur hex. Le deuxième paramètre est la quantité pour l'ajustement, de 0 à 255. Cette fonction peut être utilisée dans les fichiers CSS pour créer une variation de couleur. Un autre bon cas d'utilisation est de l'utiliser avec un paramètre couleur d'un module couleur, pour permettre aux utilisateurs d'indiquer une couleur primaire qui génère automatiquement une variation de couleur. Dans l'exemple ci-dessous, la couleur hex #3A539B est stockée dans une variable appelée `base_color`. La couleur est modifiée par -80, ce qui donne un bleu plus foncé (#00034B). ```text hubl.txt theme={null} {% set base_color ="#3A539B" %} {{ color_variant(base_color, -80) }} ``` ```text sortie rendue.txt theme={null} #00034b ``` | Paramètre | Type | Description | | - | - | - | | `base_color` | Chaîne de couleurs hex | La couleur de départ à modifier. Par exemple : `#F7F7F7`. | | `brightness_offset` | Entier | Un nombre positif ou négatif utilisé pour éclaircir ou assombrir la couleur de base. | ## content\_by\_id La fonction **`content_by_id`** renvoie une page de destination, une page de site web ou un article de blog par ID. Le seul paramètre accepté par cette fonction est un ID du contenu numérique. L'exemple de code ci-dessous montre l'utilisation de cette fonction pour générer un élément de liste avec lien hypertexte. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```html example.html theme={null} {% set my_content = content_by_id(4715624297) %} ``` ```html example.html theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `id` | ID | L'ID du contenu à rechercher. | ## content\_by\_ids La liste d'ID de contenu donnée, renvoie un dictionnaire de pages de destination, de pages de site web ou d'articles de blog correspondant à ces ID. Cette fonction prend un paramètre, une liste d'ID de pages ou d'articles de blog à rechercher, placés dans un tableau. Jusqu'à 100 objets de contenu peuvent être transmis. L'exemple de code ci-dessous montre l'utilisation de cette fonction pour générer une liste d'éléments de liste avec lien hypertexte. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```html example.html theme={null} {% set contents = content_by_ids([4715624297, 4712623297, 5215624284]) %} ``` ```html example.html theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `ids` | Liste | Une liste d'ID de pages ou d'articles de blog à rechercher. Jusqu'à 100 objets de contenu peuvent être transmis. | ## copy Renvoie une copie simplifiée de la liste. Équivalent à `a[:]`. Une *copie simplifiée* construit un nouvel objet composé, puis (dans la mesure du possible) insère dans celui-ci des *références* aux objets présents dans l'original. ```text hubl.txt theme={null} {% set a = ["ham"] %} {% set b = a.copy() %} a: {{a}} b: {{b}} After Append {% do a.append("swiss") %} a: {{a}} b: {{b}} ``` ```text sortie rendue.txt theme={null} a: [ham] b: [ham] After Append a: [ham, swiss] b: [ham] ``` ## count Renvoie le nombre de fois qu'une variable existe dans une liste. ```html example.html theme={null} {% set attendees = ["Jack","Jon","Jerry","Jessica"] %} {% set jon_count = attendees.count("Jon") %} There are {{jon_count}} Jon's in the list.

After append:

{% do attendees.append("Jon") %} {% set jon_count_after_append = attendees.count("Jon") %} There are now {{jon_count_after_append}} Jon's in the list. ``` ```html example.html theme={null} There are 1 Jon's in the list.

After append:

There are now 2 Jon's in the list. ``` ## crm\_associations Obtient une liste d'enregistrements CRM associés à un autre enregistrement par son ID d'enregistrement, sa catégorie d'association et son ID de définition d'association. Cette fonction renvoie un objet avec les attributs suivants : `has_more`, `total`, `offset` et `results`. * `has_more` indique qu'il y a plus de résultats disponibles au-delà de ce lot (total > offset). * `total` est le nombre total de résultats disponibles. * `offset` est le décalage à utiliser pour le prochain lot de résultats. * *`results`* renvoie un tableau des objets associés indiqués correspondant aux paramètres de la fonction > [!WARNING] > > **Remarque :** pour des raisons de sécurité, parmi les [types d'objets standards de HubSpot](https://knowledge.hubspot.com/fr/get-started/manage-your-crm-database#standard-objects), seuls les objets `product` et `marketing_event` peuvent être récupérés sur une page accessible au public. Tout autre type d'objet standard doit être hébergé sur une page qui est soit [protégée par un mot de passe](https://knowledge.hubspot.com/fr/website-pages/password-protect-a-page) ou qui nécessite une [connexion au contrôle d'accès CMS](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content). Les objets personnalisés n'ont pas cette même restriction. ```text hubl.txt theme={null} {% set associated_contacts = crm_associations(847943847, "HUBSPOT_DEFINED", 2, "limit=3&years_at_company__gt=2&orderBy=email", "firstname,email", false) %} {{ associated_contacts }} ``` ```text sortie rendue.txt theme={null} {has_more=true, offset=3, total=203, results=[{firstname=Aimee, id=905, email=abanks@company.com}, {firstname=Amy, id=1056, email=abroma@company.com}, {firstname=Abigael, id=957, email=adonahu@company.com}]} ``` > [!WARNING] > > **Remarque :** cette fonction peut être appelée au maximum 10 fois par page. Chaque appel `crm_associations` peut renvoyer au maximum 100 objets. La limite par défaut est de 10 objets. | Paramètre | Type | Description | | - | - | - | | `id` | ID | de l'enregistrement à partir duquel les associations doivent être trouvées. | | `association category` | Chaîne | La catégorie de la définition de l'association. Les valeurs possibles sont : `HUBSPOT_DEFINED`, `USER_DEFINED` et `INTEGRATOR_DEFINED`. Ce paramètre peut être omis pour les types d'association intégrés définis par HubSpot. | | `association type id` | Entier | L'ID de la définition de l'association à utiliser. Pour les objets standards pris en charge par HubSpot, voir l'[ID du type d'association à utiliser](https://developers.hubspot.fr/docs/guides/api/crm/associations). Sinon, cet ID d'association peut être trouvé dans [l'API de schéma d'objets CRM](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details). | | `query` | Chaîne | L'`id` de l'enregistrement OU une chaîne de requête, délimitée par `&`. Toutes les expressions sont combinées par un ET. Les opérateurs pris en charge :
  • `eq` (par défaut),
  • `neq`
  • `lt`
  • `lte`
  • `gt`
  • `gte`
  • `is_null`
  • `not_null`
  • `in`
  • `nin`
  • `contains` (pour les propriétés à plusieurs valeurs ou de chaîne, comme *"firstname\_\_contains=Tim"*)
Les requêtes peuvent inclure les paramètres suivants :
  • `limit` : le nombre maximum de résultats renvoyés dans la réponse. Par exemple, `limit=50`.
  • `offset` : pour paginer les résultats si le nombre de résultats renvoyés est supérieur au paramètre de limite. Par exemple, `offset=51`.
  • `orderBy` : classer les résultats selon une propriété spécifique. Par exemple : `orderBy=email`.
| | `properties` | Chaîne | Facultative. Une liste de propriétés à renvoyer, séparées par des virgules. Par défaut, un petit ensemble de propriétés communes est renvoyé. La propriété de l'ID est toujours renvoyée.Une liste complète des propriétés peut être trouvée en utilisant les points de terminaisons [obtenir toutes les propriétés du contact](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-contacts#get-all-contact-properties) et [obtenir toutes les propriétés de l'entreprise](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-companies#get-all-company-properties). | | `formatting` | Booléen | Facultatif. Formatez les valeurs telles que les dates et les devises en fonction des paramètres de ce portail. Omettre ou transmettre `false` pour les chaînes brutes. | ## crm\_object Récupère un seul enregistrement CRM par requête ou selon son ID. Les enregistrements sont renvoyés sous la forme d'un dictionnaire de propriétés et de valeurs. Cette fonction peut également être [utilisée avec des objets personnalisés et des objets intégrateurs](/docs/cms/start-building/features/data-driven-content/crm-objects). > [!WARNING] > > **Remarque :** pour des raisons de sécurité, parmi les [types d'objets standards de HubSpot](https://knowledge.hubspot.com/fr/get-started/manage-your-crm-database#standard-objects), seuls les objets `product` et `marketing_event` peuvent être récupérés sur une page accessible au public. Tout autre type d'objet standard doit être hébergé sur une page qui est soit [protégée par un mot de passe](https://knowledge.hubspot.com/fr/website-pages/password-protect-a-page) ou qui nécessite une [connexion au contrôle d'accès CMS](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content). Les objets personnalisés n'ont pas cette même restriction. > [!TIP] > > Quelle est la différence entre `in` et `contains` ? > > `in` renvoie quelque chose si la valeur de la propriété correspond à l'une des valeurs données. Alors que `contains` renvoie quelque chose seulement si les valeurs de la propriété, pour sélection multiple, ont toutes les valeurs données. ```text hubl.txt theme={null} {% set contact = crm_object("contact", "email=contact@company.com", "firstname,lastname", false) %} {% set contact = crm_object("contact", 123) %} {{ contact.firstname }} {{ contact.lastname }} ``` ```text sortie rendue.txt theme={null} Brian Halligan ``` > [!WARNING] > > **Remarque :** cette fonction ne peut être appelée qu'au maximum 10 fois par page. | Paramètre | Type | Description | | - | - | - | | `object_type` | Chaîne | Le nom du type d'objet. Les noms des types d'objets tiennent compte de la casse.[Les types d'objets pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). Pour trouver les noms des types d'objets spécifiques aux comptes et aux intégrateurs disponibles dans votre compte, utilisez l'[API de schéma d'objets CRM](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) pour obtenir les définitions des types et rechercher la propriété name. Elle contient le nom du type d'objet interne qui doit être utilisé dans la l'intégrateur functionFor pour les types d'objets spécifiques à l'intégrateur et au compte ayant le même nom que les objets intégrés, utilisez les objets [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) (FQN). | | `query` | Chaîne | Facultative. L'`id` de l'enregistrement OU une chaîne de requête, délimitée par `&`. Toutes les expressions sont combinées par un ET. Les opérateurs pris en charge :
  • `eq` (par défaut)
  • `neq`
  • `lt`
  • `lte`
  • `gt`
  • `gte`
  • `is_null`
  • `not_null`
  • `in`
  • `nin`
  • `contains`, (pour les propriétés à plusieurs valeurs ou de chaîne, comme *"firstname\_\_contains=Tim"*)
Les requêtes peuvent inclure les paramètres suivants :
  • `limit` : le nombre maximum de résultats renvoyés dans la réponse. Par exemple, `limit=50`.
  • `offset` : pour paginer les résultats si le nombre de résultats renvoyés est supérieur au paramètre de limite. Par exemple, `offset=51`.
  • `orderBy` : classer les résultats selon une propriété spécifique. Par exemple : `orderBy=email`.
| | `properties` | Chaîne | Facultative. Une liste de propriétés à renvoyer, séparées par des virgules. Par défaut, un petit ensemble de propriétés communes est renvoyé. La propriété de l'ID est toujours renvoyée.Une liste complète des propriétés peut être trouvée en utilisant les points de terminaisons [obtenir toutes les propriétés du contact](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-contacts#get-all-contact-properties) et [obtenir toutes les propriétés de l'entreprise](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-companies#get-all-company-properties). | | `formatting` | Booléen | Facultatif. Formatez les valeurs telles que les dates et les devises en fonction des paramètres de ce portail. Transmettre `false` pour les chaînes brutes. | > [!WARNING] > > **Remarque :** lors de la création d'une requête, les valeurs `range`, `distinct`, `ndistinct` et `startswith` sont des mots-clés réservés. Pour interroger une propriété qui utilise l'un de ces noms, vous devez utiliser le format suivant : `range__eq=` (plutôt que `range=`). ## crm\_objects Obtient une liste d'enregistrements pour un type d'objet spécifique à partir du CRM de HubSpot. Cette fonction renvoie un objet avec les attributs suivants : `has_more`, `total`, `offset` et `results`. * `has_more` indique qu'il y a plus de résultats disponibles au-delà de ce lot (total > offset). * `total` est le nombre total de résultats disponibles. * `offset` est le décalage à utiliser pour le prochain lot de résultats. * `results` renvoie un tableau des objets indiqués correspondant aux paramètres de la fonction Les résultats peuvent être triés en utilisant au moins un paramètre de classement dans la requête. Par exemple, `crm_objects("contact", "firstname=Bob&order=lastname&order=createdate")` classera les contacts portant le prénom `"Bob"` par nom de famille, puis par `createdate`. Pour inverser un tri, ajoutez `-` devant le nom de la propriété, par exemple `order=-createdate`. La fonction d'objets CRM peut également être [utilisée avec des objets personnalisés et des objets intégrateurs](/docs/cms/start-building/features/data-driven-content/crm-objects). > [!WARNING] > > **Remarque :** pour des raisons de sécurité, parmi les [types d'objets standards de HubSpot](https://knowledge.hubspot.com/fr/get-started/manage-your-crm-database#standard-objects), seuls les objets `product` et `marketing_event` peuvent être récupérés sur une page accessible au public. Tout autre type d'objet standard doit être hébergé sur une page qui est soit [protégée par un mot de passe](https://knowledge.hubspot.com/fr/website-pages/password-protect-a-page) ou qui nécessite une [connexion au contrôle d'accès CMS](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content). Les objets personnalisés n'ont pas cette même restriction. ```text hubl.txt theme={null} {% set objects = crm_objects("contact", "firstname__not_null=&limit=3", "firstname,lastname") %} {{ objects }} ``` ```text sortie rendue.txt theme={null} {has_more=true, offset=3, total=331, results=[{firstname=Brian, id=44151, lastname=Halligan}, {firstname=Dharmesh, id=44051, lastname=Shah}, {firstname=George, id=88551, lastname=Washington}]} ``` > [!WARNING] > > **Remarque :** cette fonction peut être appelée au maximum 10 fois par page. Chaque appel `crm_objects` peut renvoyer au maximum 100 objets. La limite par défaut est de 10 objets. | Paramètre | Type | Description | | - | - | - | | `object_type` | Chaîne | Le type d'objet par nom. Les noms des types d'objets tiennent compte de la casse. Le singulier et le pluriel sont acceptés pour les types d'objets standards (par exemple, `contact`, `contacts`). Découvrez-en davantage sur les [types d'objets pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). Pour trouver les noms des types d'objets spécifiques aux comptes et aux intégrateurs disponibles dans votre compte, utilisez l'[API de schéma d'objets CRM](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) pour obtenir les définitions des types et la propriété name. Pour les types d'objets spécifiques à l'intégrateur et au compte ayant le même nom que les objets intégrés, utilisez les objets [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) (FQN). | | `query` | Chaîne | Facultative. L'ID de l'enregistrement ou une chaîne de requête, délimitée par `&`. Toutes les expressions sont combinées par un ET.Les opérateurs pris en charge :
  • `eq` (par défaut)
  • `neq`
  • `lt`
  • `lte`
  • `gt`
  • `gte`
  • `is_null`
  • `not_null`
  • `in`
  • `nin`
  • `contains`, (pour les propriétés à plusieurs valeurs ou de chaîne, comme *"firstname\_\_contains=Tim"*)
Exemple : `"email=contact@company.com"` | | `properties` | Chaîne | Facultative. Une liste de propriétés à renvoyer, séparées par des virgules. Par défaut, un petit ensemble de propriétés communes est renvoyé. La propriété ID est toujours renvoyée. Une liste complète des propriétés peut être trouvée en utilisant les points de terminaisons [obtenir toutes les propriétés du contact](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-contacts#get-all-contact-properties) et [obtenir toutes les propriétés de l'entreprise](https://developers.hubspot.fr/docs/reference/api/crm/properties/v1-companies#get-all-company-properties). L'ID de l'enregistrement est toujours inclus dans les propriétés de l'objet renvoyé, même s'il n'est pas explicitement ajouté dans la liste des propriétés. | | `formatting` | Booléen | Facultatif. Formatez les valeurs telles que les dates et les devises en fonction des paramètres de ce portail. Transmettre `false` pour les chaînes brutes. | > [!WARNING] > > **Remarque :** lors de la création d'une requête, les valeurs `range`, `distinct`, `ndistinct` et `startswith` sont des mots-clés réservés. Pour interroger une propriété qui utilise l'un de ces noms, vous devez utiliser le format suivant : `range__eq=` (plutôt que `range=`). ## crm\_property\_definition Obtenir la définition de la propriété pour un type d'objet et un nom de propriété donnés. Les types d'objets pris en charge sont les objets standards HubSpot (par exemple, contacts), les objets spécifiques au portail et les objets intégrateurs. **HubL** ```hubl theme={null} {{ crm_property_definition("house_listing", "agent_name") }} ``` | Paramètre | Type | Description | | - | - | - | | `object_type` | Chaîne | Le nom du type d'objet. Les noms des types d'objets tiennent compte de la casse. [Les types d'objets pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). Pour trouver les noms des types d'objets spécifiques aux comptes et aux intégrateurs disponibles dans votre compte, utilisez l'[API de schéma d'objets CRM](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) pour obtenir les définitions des types et rechercher la propriété name. Elle contient le nom du type d'objet interne qui doit être utilisé dans la l'intégrateur functionFor pour les types d'objets spécifiques à l'intégrateur et au compte ayant le même nom que les objets intégrés, utilisez les objets [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) (FQN). | | `property_name` | Chaîne | Le nom de la propriété, sans tenir compte de la casse, dont la définition doit être récupérée. | ## crm\_property\_definitions Obtenir les définitions de propriété pour un type d'objet et un ensemble de noms de propriétés donnés. Les types d'objets pris en charge sont les objets standards HubSpot (par exemple, contacts), les objets spécifiques au portail et les objets intégrateurs. **HubL** ```hubl theme={null} {{ crm_property_definitions("house_listing", "agent_name,address") }} ``` | Paramètre | Type | Description | | - | - | - | | `object_type` | Chaîne | Le nom du type d'objet. Les noms des types d'objets tiennent compte de la casse. [Les types d'objets pris en charge](/docs/cms/start-building/features/data-driven-content/crm-objects#supported-crm-object-types). Pour trouver les noms des types d'objets spécifiques aux comptes et aux intégrateurs disponibles dans votre compte, utilisez l'[API de schéma d'objets CRM](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) pour obtenir les définitions des types et rechercher la propriété name. Elle contient le nom du type d'objet interne qui doit être utilisé dans la l'intégrateur functionFor pour les types d'objets spécifiques à l'intégrateur et au compte ayant le même nom que les objets intégrés, utilisez les objets [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) (FQN). | | `property_name` | Chaîne | Facultative. Les noms de propriétés séparés par des virgules, sans tenir compte de la casse, pour lesquels il faut récupérer la définition. S'il est vide, les définitions de toutes les propriétés seront récupérées. | ## cta Étant donné que les modules CTA possèdent de nombreux paramètres qui contiennent des variations de leur code, vous pouvez utiliser la fonction CTA pour générer facilement un CTA particulier dans un modèle, une page ou un e-mail. Cette fonction est celle que l'éditeur de texte enrichi utilise lorsque vous ajoutez un CTA via l'éditeur. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```text hubl.txt theme={null} {{ cta("ccd39b7c-ae18-4c4e-98ee-547069bfbc5b") }} {{ cta("ccd39b7c-ae18-4c4e-98ee-547069bfbc5b", "justifycenter") }} ``` ```html example.html theme={null} Start a HubSpot trial Start a HubSpot trial ``` | Paramètre | Type | Description | | - | - | - | | `guid` | Chaîne | L'ID du CTA à rendre. Se trouve dans l'URL de l'écran de détails du CTA. | | `align_opt` | Énumération | Ajuste l'alignement du CTA. Les valeurs comprennent : `justifyleft`, `justifycenter`, `justifyright`, `justifyfull`. | ## extend Étend une liste en ajoutant tous les éléments d'une table itérative. En d'autres termes, insérer tous les éléments d'une liste dans une autre liste. ```text hubl.txt theme={null} {% set vehicles = ["boat","car","bicycle"] %} {% set more_vehicles = ["airplane","motorcycle"] %} {% do vehicles.extend(more_vehicles) %} {{vehicles}} ``` ```text sortie rendue.txt theme={null} [boat, car, bicycle, airplane, motorcycle] ``` ## file\_by\_id Cette fonction renvoie les métadonnées d'un fichier par ID. Elle accepte un seul paramètre, l'ID numérique du fichier à rechercher. Pour récupérer plusieurs fichiers à la fois, utilisez plutôt la fonction [files\_by\_ids](#files_by_ids). > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. ```text hubl.txt theme={null} {% set file = file_by_id(123) %} {{ file.friendlyUrl }} ``` ```text sortie rendue.txt theme={null} https://www.hubspot.com/hubfs/HubSpot_Logos/HSLogo_color.svg ``` | Paramètre | Type | Description | | - | - | - | | `file_id` | Nombre | L'ID du fichier à rechercher. | ## files\_by\_ids Renvoie les métadonnées de plusieurs fichiers par ID. Cela accepte un tableau d'ID de fichiers. > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page et peut accepter jusqu'à 100 ID de fichier. ```text hubl.txt theme={null} {% set files = files_by_ids([123,456])%} {% for file in files %} URL:{{file.friendlyUrl}}
{% endfor %} ``` ```text sortie rendue.txt theme={null} URL:https://api-na1.hubspot.com/filemanager/api/v2/files/123/example-file-1 URL:https://api-na1.hubspot.com/filemanager/api/v2/files/456/example-file-2 ``` | Paramètre | Type | Description | | - | - | - | | `file_id` | Nombre | Les ID des fichiers à rechercher, séparés par des virgules (jusqu'à 100). | Par exemple, vous pouvez utiliser cette fonction pour parcourir les fichiers téléchargés d'une fiche d'informations d'un contact. Pour parcourir les résultats, vous devrez utiliser le [filtre HubL divisé](/docs/cms/reference/hubl/filters#split), car la propriété CRM sera renvoyée sous la forme d'une chaîne séparée par un point-virgule. ```hubl theme={null} {% set objects = crm_objects("contact", "email=bh@hubspot.com", "file").results %} {% for item in objects %} {% set fileIDs = item.file|split(";") %} {% set files = files_by_ids(fileIDs) %} {% for file in files %}
File name: {{file.name}}
Friendly Url: {{file.friendlyUrl }}
Url: {{file.url }}

{% endfor %} {% endfor %} ``` ## flag\_content\_for\_access\_check Lorsqu'un article de blog est [configuré pour l'accès à l'auto-inscription](https://knowledge.hubspot.com/fr/blog/use-self-registration-for-private-blog-content), les visiteurs devront s'inscrire ou se connecter pour afficher le contenu complet de l'article. Les ressources de listing de blog par défaut de HubSpot incluent automatiquement cette fonctionnalité, et incluront également un indicateur d'icône de cadenas pour les articles qui nécessitent une auto-inscription pour y accéder. En savoir plus sur la [création de solutions personnalisées à l'aide de cette fonction et de son API correspondante](/docs/cms/start-building/features/memberships/overview#private-blog-posts-with-self-registration). Cette fonction vérifie si un article de blog est accessible au visiteur actuel. Lorsqu'elle est appelée, la fonction est remplacée par l'attribut suivant : `hs-member-content-access=` A value of `true` indicates that the blog post requires the visitor to log in to view the full content. ```text hubl.txt theme={null} {% for content in contents %}
...
{% endfor %} ``` ```text sortie rendue.txt theme={null}
...
``` | Paramètre | Type | Description | | - | - | - | | `ID` | ID | L'ID du contenu qui sera vérifié par rapport au visiteur actuellement connecté. | ## follow\_me\_links Renvoie les [liens de compte de réseau social définis dans les paramètres du compte](https://knowledge.hubspot.com/fr/design-manager/use-default-modules-in-your-template#add-social-accounts-to-the-follow-me-module). Utilisé dans le [module follow\_me par défaut](/docs/cms/reference/modules/default-modules#follow-me). ```text hubl.txt theme={null} {% set fm = follow_me_links() %} {{ fm }} ``` ```text sortie rendue.txt theme={null} [FollowMeLink{type=URL, id=5142734, altName=RSS, followMeUrl=http://website.com/rss.xml, iconName=rss, name=http://website.com/rss.xml}] ``` ## format\_address Formate une adresse en fonction des paramètres régionaux du contexte. ```text hubl.txt theme={null} {{ format_address('en-us', { address: "25 First Street", address2: "2nd Floor", city: "Cambridge", state: "MA", country: "United States", zip: "02141"}) }} ``` ```text sortie rendue.txt theme={null} [25 First Street, 2nd Floor, Cambridge, MA 02141, United States] ``` | Paramètre | Type | Description | | - | - | - | | `locale` | Chaîne | Les paramètres régionaux selon lesquels formater l'adresse. | | `address` | Chaîne | L'adresse postale. | | `address2` | Chaîne | La deuxième ligne de l'adresse, comme le numéro d'étage ou d'appartement. | | `city` | Chaîne | La ville de l'adresse. | | `state` | Chaîne | L'état de l'adresse. | | `country` | Chaîne | Le pays de l'adresse. | | `zip` | Chaîne | Le code postal de l'adresse. | ## format\_company\_name Formate le nom d'une entreprise en ajoutant des titres honorifiques japonais, le cas échéant. ```text hubl.txt theme={null} {{ format_company_name("companyName", addJapaneseHonorifics) }} ``` ```text sortie rendue.txt theme={null} HubSpot ``` | Paramètre | Type | Description | | - | - | - | | `companyName` | Chaîne | Le nom de l'entreprise. | | `useHonorificIfApplicable` | Booléen | Lorsque cet élément est défini sur `true` et que la langue du contexte est le japonais, un titre honorifique d'entreprise japonais sera ajouté, le cas échéant. | ## format\_name Formate le nom d'une personne en plaçant le nom de famille avant le prénom et ajoute des titres honorifiques japonais, le cas échéant. ```text hubl.txt theme={null} {{ format_name("firstName", "surname", addJapaneseHonorifics) }} ``` ```text sortie rendue.txt theme={null} Hobbes Baron ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `firstName` | Obligatoire | Le prénom de la personne. | | | `surname` | Chaîne | Le nom ou prénom de la personne. | `False` | | `useHonorificIfApplicable` | Booléen | Lorsque cet élément est défini sur `true` et que la langue du contexte est le japonais, un titre honorifique japonais sera ajouté, le cas échéant. | | ## format\_datetime Formate les composants de date et d'heure d'un objet de date, comme pour le filtre HubL [format\_datetime](/docs/cms/reference/hubl/filters#format_datetime). Cette fonction remplace la fonction obsolète `datetimeformat`. ```text hubl.txt theme={null} {{ format_datetime(content.publish_date, "short", "America/New_York", "en") }} ``` ```text sortie rendue.txt theme={null} 12/31/69 7:00 PM ``` | Paramètre | Type | Description | | - | - | - | | `format` | Chaîne | Le format à utiliser. Peut être l'un des éléments suivants :
  • `short`
  • `medium`
  • `long`
  • `full`
  • un modèle personnalisé reposant sur [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns)
| | `timeZone` | Chaîne | Le fuseau horaire de la date de sortie au format [IANA TZDB](https://data.iana.org/time-zones/tzdb/). | | `locale` | Chaîne | Les paramètres régionaux à utiliser pour les formats reposant sur des paramètres régionaux. | ## geo\_distance Cette fonction contient 4 paramètres et calcule la distance ellipsoïdale 2D entre deux points sur la Terre. Utilisez cette fonction comme une requête de filtre pour obtenir des données HubDB. ```html example.html theme={null} {% for row in hubdb_table_rows(1234567, "geo_distance(loc,1.233,-5.678,mi)__gt=500") %} {{row.name}}
{% endfor %} ``` ```html example.html theme={null} Cambridge, MA
Salem, MA
San Diego, CA
Chicago, IL
``` | Paramètre | Type | Description | | - | - | - | | `point1` | Emplacement | Emplacement à partir d'une colonne HubDB. | | `point2_lat` | Latitude | Latitude du point2. | | `point2_long` | Longitude | Longitude du point2. | | `units` | Chaîne | Unités pour la valeur de renvoi. Les options sont `FT` pour pieds, `MI` pour miles, `M` pour mètres ou `KM` pour kilomètres. | ## get\_asset\_url Cette fonction renvoie l'URL publique d'un modèle ou d'un fichier de code indiqué. Le paramètre de cette fonction est le chemin d'accès de la ressource dans le gestionnaire de conception. Les URL des fichiers codés sont mises à jour à chaque fois que vous les publiez ; par conséquent, en utilisant cette fonction, vous vous assurez de toujours utiliser la dernière version du fichier. Vous pouvez générer automatiquement cette fonction dans l'application, soit en faisant un clic droit sur un **fichier** et en sélectionnant **Copier l'URL publique**, soit en cliquant sur **Actions**, puis en sélectionnant **Copier l'URL publique**. L'exemple ci-dessous permet d'obtenir l'URL d'un fichier JavaScript créé dans le gestionnaire de conception qui peut être inclus comme `src` d'une balise ` ``` ## resize\_image\_url Réécrit l'URL de l'image stockée dans le Gestionnaire de fichiers en une URL qui redimensionnera l'image sur demande. La fonction accepte un paramètre obligatoire et cinq paramètres facultatifs. Au moins un paramètre facultatif doit être transmis. Obligatoire * **URL :** chaîne, URL d'une image hébergée par HubSpot. Facultatif * **width :** nombre, la nouvelle largeur de l'image en pixels. * **height :** nombre, la nouvelle hauteur de l'image en pixels. * **length :** nombre, la nouvelle longueur du plus grand côté, en pixels. * **upscale :** booléen, utilise les dimensions de l'image redimensionnée même si elles augmentent l'échelle de l'image originale (les images peuvent apparaître floues). * **upsize :** booléen, renvoie l'image redimensionnée même si elle est plus grande que l'originale en octets. > [!WARNING] > > **Remarque :** les images supérieures à 4 096 pixels en hauteur ou en largeur ne seront pas automatiquement redimensionnées. Au lieu de cela, vous devrez [redimensionner manuellement l'image](https://knowledge.hubspot.com/fr/files/automatic-image-resizing-on-hubspot-content). ```text hubl.txt theme={null} {{ resize_image_url("http://your.hubspot.site/hubfs/img.jpg", 0, 0, 300) }} ``` ```text sortie rendue.txt theme={null} http://your.hubspot.site/hubfs/img.jpg?length=300&name=img.jpg ``` | Paramètre | Type | Description | | - | - | - | | `url` | Chaîne | URL d'une image hébergée par HubSpot. | | `width` | Entier (px) | La nouvelle largeur de l'image, en pixels. | | `height` | Entier (px) | La nouvelle hauteur de l'image, en pixels. | | `length` | Entier (px) | La nouvelle longueur du plus grand côté, en pixels. | | `upscale` | Booléen | Utilise les dimensions de l'image redimensionnée même si elles augmentent l'échelle de l'image originale (les images peuvent apparaître floues). La valeur par défaut est `false`. | | `upsize` | Booléen | Renvoie l'image redimensionnée même si elle est plus grande que l'originale en octets.La valeur par défaut est `false`. | ## reverse Inverse le classement des éléments d'une liste. Il ne prend pas de paramètres. Pour inverser un objet ou renvoyer un itérateur pour parcourir la liste en sens inverse, utilisez [`|reverse`](/docs/cms/reference/hubl/filters#reverse) ```text hubl.txt theme={null} {% set numbers = [1,2,3,4] %} {% do numbers.reverse() %} {{numbers}} ``` ```text sortie rendue.txt theme={null} [4, 3, 2, 1] ``` ## set\_response\_code Définir le code de réponse comme le code indiqué. [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) est le seul code pris en charge pour le moment. Si vous l'utilisez, votre page renverra une erreur `404`. ```text hubl.txt theme={null} {{ set_response_code(404) }} ``` ```text sortie rendue.txt theme={null} ``` | Paramètre | Type | Description | | - | - | - | | `code` | Entier | Le code de réponse HTTP. Actuellement, `404` est le seul code pris en charge. | ## super Cette fonction imprime le contenu du modèle parent dans un modèle enfant en utilisant la balise [extends](/docs/cms/reference/hubl/overview#blocks-and-extends). Par exemple, dans le code ci-dessous, un modèle HTML de base a été créé avec un bloc HubL nommé `sidebar` et enregistré sous `parent.html`. Un deuxième fichier de modèle est créé et va étendre ce fichier parent. Normalement, le `

` serait imprimé dans le bloc de la barre latérale du HTML parent. Mais en utilisant `super`, le contenu du bloc de la barre latérale du modèle parent est combiné avec le contenu du modèle enfant. ```html example.html theme={null} {% extends "custom/page/web_page_basic/parent.html" %} {% block sidebar %}

Table Of Contents

{{ super() }} {% endblock %} ``` ```html example.html theme={null} This is the parent template

Table of contents

Sidebar content from parent. ``` ## today Renvoie le début de la journée (12h00). Vous pouvez éventuellement ajouter un paramètre pour modifier le fuseau horaire par rapport à l'UTC par défaut. ```text hubl.txt theme={null} {{ today() }} {{ today("America/New_York") }} {{ unixtimestamp(today("America/New_York").plusDays(1)) }} ``` ```text sortie rendue.txt theme={null} 2018-10-23T00:00Z 2018-10-23T00:00-04:00[America/New_York] 1540353600000 ``` ## to\_local\_time Convertit un horodatage UNIX en heure locale, en fonction des paramètres de votre rapport HubSpot. Vous pouvez ensuite appliquer un filtre datetimeformat pour formater la date. ```text hubl.txt theme={null} {{ to_local_time(eastern_dt) }} ``` ```text sortie rendue.txt theme={null} 2015-05-13 10:37:31 ``` | Paramètre | Type | Description | | - | - | - | | `date` | Horodatage | UNIX à convertir en heure locale. | ## topic\_cluster\_by\_content\_id Renvoie un dictionnaire HubL représentant le groupe thématique associé à un élément de contenu (déterminé par l'id de contenu transmis), y compris les métadonnées sur la page pilier associée, le thème principal et les sous-thèmes. Peut être utilisé pour établir un "auto-link" entre un élément de contenu et la page pilier qui lui est associée \[si elle existe]. Les métadonnées disponibles se trouvent dans : attachableContent (les métadonnées du contenu actuel), topic (les métadonnées du thème associé du contenu actuel), coreTopic (les métadonnées du thème principal du groupe associé), et pillarPage (les métadonnées de la page pilier associées). Utilisez `{{ topicCluster|pprint }}` pour obtenir un affichage complet des propriétés/attributs disponibles. ```html example.html theme={null} {{ topic_cluster_by_content_id(content.id) }} {%- if content.id -%} {%- set topicCluster = topic_cluster_by_content_id(content.id) -%} {%- if topicCluster.pillarPage.url.value and topicCluster.pillarPage.publishState == "PUBLISHED" -%} {%- endif -%} {%- endif -%} ``` ```html example.html theme={null} { attachedContent, topic, coreTopic, pillarPage } (AttachedContentWithContext: {attachedContent=AttachedContent{id=1234, topicId=1234, clusterId=1234, portalId=0, attachable=Attachable{contentId=124, url=ValidatedUri{https://www.hubspot.com/}, attachableType=LANDING_PAGE, title=title, publishState=PUBLISHED, deletedAt=null}, isLinkedToPillarPage=null, isPillarPage=null, createdAt=1547238986475, updatedAt=1547238986475, deletedAt=null}, coreTopic=Optional[Topic{id=1234, portalId=0, clusterId=1234, phrase=TOPIC PHRASE, attachedContent=null, isCoreTopic=false, createdAt=1547157062081, updatedAt=1547232313421, deletedAt=null}], pillarPage=Optional[AttachedContent{id=1234, topicId=1234, clusterId=1234, portalId=0, attachable=Attachable{contentId=null, url=ValidatedUri{https://www.hubspot.com.com/}, attachableType=EXTERNAL_URL, title=null, publishState=PUBLISHED, deletedAt=null}, isLinkedToPillarPage=null, isPillarPage=null, createdAt=1547157062086, updatedAt=1547157062086, deletedAt=null}], topic=Optional[Topic{id=1234, portalId=0, clusterId=8345, phrase=topic phrase, attachedContent=null, isCoreTopic=false, createdAt=1547238962703, updatedAt=1547238962703, deletedAt=null}]}) ``` > [!WARNING] > > **Remarque :** cette fonction est limitée à 10 appels par page. | Paramètre | Type | Description | | - | - | - | | `content_id` | ID | L'id de la page à rechercher. | ## truncate La fonction truncate s'utilise de la même manière que le [filtre truncate](/docs/cms/reference/hubl/filters#truncate), mais utilise la syntaxe de la fonction au lieu de celle du filtre. Le premier paramètre indique la chaîne. Le deuxième paramètre indique la longueur à laquelle il faut tronquer. Le dernier paramètre indique les caractères à ajouter lorsque la troncature se produit. > [!WARNING] > > **Remarque :** comme cette fonction s'appuie sur les espaces entre les mots pour raccourcir les chaînes, il se peut qu'elle ne fonctionne pas comme prévu pour les langues sans espace entre caractères, comme le japonais. ```text hubl.txt theme={null} {{ truncate("string to truncate at a certain length", 19, false, "...") }} {% set longString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sodales ultricies velit sit amet ornare." %} {{ truncate(longString, 40, false, "...") }} ``` ```text sortie rendue.txt theme={null} string to truncate ... Lorem ipsum dolor sit amet, consectetur ... ``` | Paramètre | Type | Description | | - | - | - | | `string_to_truncate` | Chaîne | Chaîne qui sera tronquée. | | `length` | Entier | indique la longueur à laquelle le texte doit être tronqué (y compris les caractères HTML). | | `killwords` | Booléen | Si elle est vraie, la chaîne coupera le texte en longueur, même si c'est au milieu d'un mot. | | `end` | Chaîne | Les caractères qui seront ajoutés pour indiquer où le texte a été tronqué. | ## type Cette fonction accepte un argument et renvoie le type d'un objet. La valeur de renvoie peut être : `"bool"`, `"datetime"`, `"dict"`, `"float"`, `"int"`, `"list"`, `"long"`, `"null"`, `"str"` ou `"tuple"`. ```text hubl.txt theme={null} {{ type("Blog") }} {% set my_type = type("Blog") %}

{{my_type}}

``` ```text sortie rendue.txt theme={null}

str

``` ## unixtimestamp Cette fonction renvoie un horodatage unix lorsque vous fournissez un objet datetime. ```text hubl.txt theme={null} {{ unixtimestamp(d) }} ``` ```text sortie rendue.txt theme={null} 1565983117868 ``` ## update Met à jour le dictionnaire avec les éléments d'un autre objet dictionnaire ou d'une table itérative de paires clé/valeur. Utilisez cette fonction pour combiner ou fusionner des objets. ```text hubl.txt theme={null} {% set dict_var = {"authorName": "Douglas Judy", "authorTitle": "Mastermind" } %} {% do dict_var.update({"authorFriend": "Jake"}) %} {% do dict_var.update({"authorLocation": "unknown"}) %} {{ dict_var }} ``` ```text sortie rendue.txt theme={null} {authorName=Douglas Judy, authorTitle=Mastermind, authorFriend=Jake, authorLocation=unknown} ``` # Fonctions SI Source: https://developers.hubspot.fr/docs/cms/reference/hubl/if-statements Profitez d'un guide pratique des fonctions if HubL de HubSpot pour les développeurs CMS. Vous pouvez inclure une logique conditionnelle dans vos modules et modèles en utilisant les [fonctions if](#basic-if-statement-syntax) et [unless](#unless-statements) de HubL. Les fonctions if contiennent souvent des [opérateurs pris en charge](/docs/cms/reference/hubl/operators-and-expression-tests) par HubL et peuvent être utilisées pour exécuter des [tests d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests). > [!WARNING] > > ### Remarque: > > Si vous utilisez des [jetons de personnalisation](/docs/cms/reference/hubl/functions#personalization-token) dans une fonction conditionnelle de votre module d'e-mail, vous devez [activer les e-mails programmables pour ce module](/docs/cms/start-building/features/data-driven-content/emails-with-programmable-content). > > Les informations transmises via les API d'envoi unique ([v3](/docs/api-reference/marketing-marketing-emails-v3/guide) et [v4](/docs/api-reference/marketing-single-send-v4/guide)) ne fonctionneront pas dans les fonctions `if`, car les modèles sont compilés avant que les informations ne soient renseignées. ## Syntaxe de base des fonctions if HubL utilise des fonctions if pour définir la logique d'un modèle. La syntaxe des fonctions if de HubL est très similaire à celle de la logique conditionnelle dans Python. Les fonctions `if` sont encadrées par des [délimiteurs de fonction](/docs/cms/reference/hubl/variables-macros-syntax), commençant par une fonction `if` d'ouverture et se terminant par une fonction `endif`. L'exemple ci-dessous fournit la syntaxe de base d'une fonction if, où la condition est remplacée par la règle booléenne que vous allez évaluer comme étant vraie ou fausse. ```hubl theme={null} {% if condition %} If the condition is true print this to template. {% endif %} ``` Maintenant que vous avez vu la syntaxe de base, penchons-nous sur quelques exemples concrets de fonctions if de base. Les exemples suivants présentent des fonctions if qui déterminent si un module HubL portant le nom `my_module` et si une variable nommée `my_module` sont présents ou non dans un modèle. Notez que sans aucun opérateur, la fonction if détermine si le module est défini ou non dans le contexte du modèle. ```hubl theme={null} {% module "my_module" path="@hubspot/rich_text", label="My rich text module", html="Default module text" export_to_template_context=true %} {% if widget_data.my_module %} A module named "my_module" is defined in this template. {% endif %} {% set my_variable = "A string value for my variable" %} {% if my_variable %} The variable named my_variable is defined in this template. {% endif %} ``` Notez que lors de l'évaluation du module HubL, le nom du module est laissé entre guillemets dans la fonction `if` et que lors du test de la variable, aucun guillemet n'est utilisé autour du nom de la variable. Dans les deux exemples ci-dessus, le module et la variable existent dans le modèle, de sorte que les fonctions sont évaluées pour imprimer le balisage. Notez que ces exemples testent uniquement si le module et la variable sont définis, et non s'ils ont une valeur ou non. Examinons maintenant une fonction `if` qui évalue si un module a une valeur, au lieu d'évaluer s'il existe dans le modèle. Pour ce faire, nous devons utiliser le paramètre [export\_to\_template\_context](/docs/cms/reference/modules/export-to-template-context). Dans l'exemple ci-dessous, si l'élément de texte a une valeur dans l'éditeur de contenu, le balisage s'imprimera. Si le champ de texte du module était vide, aucun balisage ne serait restitué. Si vous travaillez dans des modules personnalisés, il existe une syntaxe simplifiée de `widget.widget_name` décrite dans l'[exemple ici](/docs/cms/reference/modules/configuration). ```text input.txt theme={null} {% module "product_names" path="@hubspot/text", label="Enter the product names that you would like to render the coupon ad for", value="all of our products", export_to_template_context=True %} {% if widget_data.product_names.value %}

For a limited time, get 50% off {{ widget_data.product_names.value}}!

{% endif %} ``` ```text output.txt theme={null}

For a limited time get 50% off all of our products!

``` ## Utilisation de elif et else Les fonctions `if` peuvent être restituées de manière plus sophistiquée avec des fonctions conditionnelles supplémentaires ou avec une règle qui s'exécute lorsque la ou les conditions sont fausses. Les fonctions `elif` vous permettent d'ajouter des conditions supplémentaires à votre logique, qui seront évaluées après la condition précédente. Les fonctions **`else`** définissent une règle qui s'exécute lorsque toutes les autres conditions sont fausses. Vous pouvez avoir un nombre illimité de fonctions `elif` dans une seule fonction if, mais une seule fonction `else`. Voici l'exemple de syntaxe de base d'une fonction if qui utilise l'[opérateur `<=`](/docs/cms/reference/hubl/operators-and-expression-tests#comparison) pour vérifier la valeur d'une variable. Dans cet exemple, le modèle imprime : « Le nombre de la variable nommée est inférieur ou égal à 6. » ```hubl theme={null} {% set number = 5 %} {% if number <= 2 %} Variable named number is less than or equal to 2. {% elif number <= 4 %} Variable named number is less than or equal to 4. {% elif number <= 6 %} Variable named number is less than or equal to 6. {% else %} Variable named number is greater than 6. {% endif %} ``` Voici un autre exemple qui utilise un module de choix pour rendre différents titres pour une page de carrières, en fonction du département choisi par l'utilisateur. L'exemple utilise l'[opérateur ==](/docs/cms/reference/hubl/operators-and-expression-tests#comparison), pour vérifier certaines valeurs prédéfinies dans le module de choix. ```hubl theme={null} {% choice "department" label="Choose department", value="Marketing", choices="Marketing, Sales, Dev, Services" export_to_template_context=True %} {% if widget_data.department.value == "Marketing" %}

Want to join our amazing Marketing team?!

We have exciting career opportunities on the {{ widget_data.department.value }} team.

{% elif widget_data.department.value == "Sales" %}

Are you a Sales superstar?

We have exciting career opportunities on the {{ widget_data.department.value }} team.

{% elif widget_data.department.value == "Dev" %}

Do you love to ship code?

We have exciting career opportunities on the {{ widget_data.department.value }} team.

{% else %}

Want to work with our awesome customers?

We have exciting career opportunities on the {{ widget_data.department.value }} team.

{% endif %} ``` ## Fonctions unless Les fonctions `unless` sont des conditionnelles comme les fonctions `if`, mais elles fonctionnent selon la logique inverse. Elles restitueront et compileront le code entre les balises d'ouverture et de fermeture, sauf si la condition booléenne unique est vraie. Les fonctions commencent par **`unless`** et se terminent par **`endunless`. Les fonctions** `unless` prennent en charge les fonctions `else`, mais pas les fonctions `elif`. Voici un exemple qui imprime un en-tête En construction, sauf si le champ de texte enrichi a une valeur. Si le champ de texte enrichi a du contenu, celui-ci s'affichera. ```hubl theme={null} {% module "my_page_content" path="@hubspot/rich_text", label="Enter your page content", html="" export_to_template_context=true %} {{ widget_data.my_page_content.html }} {% unless widget_data.my_page_content.html %}

This page is under construction.

Come back soon!

{% endunless %} ``` ## ifchanged En plus des fonctions if et unless, HubL prend en charge les fonctions `ifchanged`. Ces fonctions peuvent être utilisées pour ne rendre le balisage que lorsqu'une variable a été modifiée depuis une invocation antérieure de cette balise. ## Fonctions if en ligne HubL prend en charge les fonctions `if` en ligne. Celles-ci peuvent être utilisées pour écrire une logique conditionnelle de manière concise avec des [opérateurs et des tests d'expression](/docs/cms/reference/hubl/operators-and-expression-tests). ```hubl theme={null} {% set color = "Blue" if is_blue is truthy else "Red" %} // color == "blue" {{ "Blue" if is_blue is truthy else "Red" }} // "Blue" {% set dl = true %} Download PDF ``` ## Opérateurs ternaires Il est également possible d'utiliser des opérateurs ternaires pour écrire rapidement une logique conditionnelle avec des [opérateurs et des tests d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#logical). ```hubl theme={null} // If the variable is_blue is true, output "blue", otherwise output"red" {{ is_blue is truthy ? "blue" : "red" }} // Set the variable is_red to false if is_blue is true, otherwise set to true {% set is_red = is_blue is truthy ? false : true %} ``` # Legacy quote template variables Source: https://developers.hubspot.fr/docs/cms/reference/hubl/legacy-quote-variables # Boucles for Source: https://developers.hubspot.fr/docs/cms/reference/hubl/loops Les boucles for peuvent être utilisées dans HubL pour itérer dans des séquences d'objets. Les boucles for peuvent être utilisées dans HubL pour itérer dans des séquences d'objets. Elles seront le plus souvent utilisées pour rendre le [contenu du blog](/docs/cms/start-building/building-blocks/templates/blog) dans un format de liste, mais elles peuvent également être utilisées pour trier d'autres variables de séquence. Les boucles for commencent par une fonction `{% for %}` et se terminent par une fonction `{% endfor %}`. Dans la fonction `{% for %}`, un seul élément de séquence est nommé, suivi de `in`, puis du nom de la séquence. Le code entre les fonctions `for` d'ouverture et de fermeture est imprimé à chaque itération, et comprend généralement la variable imprimée de l'élément de séquence individuel. Vous trouverez ci-dessous la syntaxe de base d'une boucle for : ```hubl theme={null} {% for item in items %} {{ item }} {% endfor %} ``` Vous trouverez ci-dessous un exemple de base qui montre comment imprimer une séquence de valeurs de variable dans une liste. ```html example.html theme={null} {% set languages = ["HTML", "CSS", "Javascript", "Python", "Ruby", "PHP", "Java"] %}

Languages

;
    {% for language in languages %}
  • {{ language }}
  • {% endfor %}
``` ```html example.html theme={null}

Languages

  • HTML
  • CSS
  • Javascript
  • Python
  • Ruby
  • PHP
  • Java
``` ## Propriétés de boucle Lorsqu'une boucle est itérative, vous pouvez utiliser la [logique conditionnelle](/docs/cms/reference/hubl/if-statements) pour définir son comportement. La propriété de variable `loop.index` tient un compte du nombre actuel d'itérations de la boucle. Il existe plusieurs autres propriétés de variable de boucle qui comptabilisent les itérations de différentes manières. Ces propriétés sont décrites ci-dessous : | Variable | Description | | - | - | | `loop.cycle` | Une fonction d'aide pour faire un cycle entre une liste de séquences. Consultez l'explication ci-dessous. | | `loop.depth` | Indique à quelle profondeur d'une boucle récursive se trouve actuellement le rendu. Commence au niveau 1. | | `loop.depth0` | Indique à quelle profondeur d'une boucle récursive se trouve actuellement le rendu. Commence au niveau 0. | | `loop.first` | Cette variable est définie sur true s'il s'agit de la première itération de la boucle. | | `loop.index` | L'itération actuelle de la boucle. Cette variable commence la comptabilisation à 1. | | `loop.index0` | L'itération actuelle de la boucle. Cette variable commence la comptabilisation à 0. | | `loop.last` | Cette variable est définie sur true s'il s'agit de la dernière itération de la boucle. | | `loop.length` | Le nombre d'éléments dans la séquence. | | `loop.revindex` | Le nombre d'itérations à partir de la fin de la boucle. Compte à rebours jusqu'à 1. | | `loop.revindex0` | Le nombre d'itérations à partir de la fin de la boucle. Compte à rebours jusqu'à 0. | Vous trouverez ci-dessous quelques exemples qui utilisent différentes variables de boucle. L'exemple de base suivant utilise `loop.index` pour conserver un compte qui est imprimé à chaque itération. ```html example.html theme={null} {% set loopy = ["Content", "Social", "Contacts", "Reports"] %} {% for app in loopy %} {{ loop.index }}. {{app}}
{% endfor %} ``` ```html example.html theme={null} 1. Content
2. Social
3. Contacts
4. Reports
``` L'exemple suivant utilise une logique conditionnelle pour vérifier si la longueur de la boucle est `divisible par` certains nombres. La largeur de la division est alors restituée en conséquence. L'exemple utilise la boucle standard des articles de blog et suppose qu'il y a 6 articles dans la boucle. ```html example.html theme={null} {% for content in contents %} {% if loop.length is divisibleby 4 %}
Post content
{% elif loop.length is divisibleby 3 %}
Post content
{% else %}
Post content
{% endif %} {% endfor %} ``` ```html example.html theme={null}
Post content
Post content
Post content
Post content
Post content
Post content
Post content
``` ## Boucles imbriquées Les boucles peuvent également être imbriquées dans d'autres boucles. La boucle for enfant sera exécutée à chaque itération de la boucle for parent. Dans l'exemple ci-dessous, une liste d'éléments enfants est imprimée dans un élément `
    ` imbriqué dans un élément `
      ` d'éléments parents. ```html example.html theme={null} {% set parents = ["Parent item 1", "Parent item 2", "Parent item 3"] %} {% set children = ["Child item 1", "Child item 2", "Child item 3"] %}
        {% for parent in parents %}
      • {{parent}}
          {% for child in children %}
        • {{child}}
        • {% endfor %}
      • {% endfor %}
      ``` ```html example.html theme={null}
      • Parent item 1
        • Child item 1
        • Child item 2
        • Child item 3
      • Parent item 2
        • Child item 1
        • Child item 2
        • Child item 3
      • Parent item 3
        • Child item 1
        • Child item 2
        • Child item 3
      ``` ## cycle La balise cycle peut être utilisée dans une boucle for pour parcourir une série de valeurs de chaîne et les imprimer à chaque itération. L'une des applications les plus pratiques de cette technique consiste à appliquer des classes alternées à vos articles de blog dans une liste. Cette balise peut être utilisée sur plus de deux valeurs et répétera le cycle s'il y a plus d'itérations de boucle que de valeurs de cycle. Dans l'exemple ci-dessous, une classe d'éléments `odd` et `even` est appliquée aux articles d'une liste (l'exemple suppose qu'il y a 5 articles dans la boucle). Veuillez noter qu'il n'y a **pas d'espace** entre les valeurs des chaînes de cycle séparées par des virgules. ```html example.html theme={null} {% for content in contents %}
      Blog post content
      {% endfor %} ``` ```html example.html theme={null}
      Blog post content
      Blog post content
      Blog post content
      Blog post content
      Blog post content
      ``` ## Variables dans les boucles > [!WARNING] > > Toutes les variables définies dans les boucles sont limitées à la portée de cette boucle et ne peuvent pas être exécutées depuis l'extérieur de la boucle. Vous pouvez exécuter des variables définies en dehors d'une boucle, à partir d'une boucle, mais pas l'inverse. ## Paires (clé, valeur) dans les boucles Si le dictionnaire d'informations que vous parcourez en boucle comporte des paires (clé, valeur), une simple boucle for n'aurait accès qu'aux valeurs. Si vous souhaitez avoir accès à la fois aux clés et aux valeurs dans la boucle for, le HubL sera formaté comme suit : ```text entrée.txt theme={null} {% set dict_var = {"name": "Cool Product", "price": "$20", "size":"XL"} %} {% for key, val in dict_var.items() %} {{ key }}: {{ val }}
      {% endfor %} ``` ```text sortie.txt theme={null} name: Cool Product
      price: $20
      size: XL
      ``` ## Itérer un nombre défini de fois Parfois, vous souhaitez itérer un nombre défini de fois, ce qui peut être utile pour générer du HTML ou des CSS. Pour ce faire, vous pouvez utiliser la fonction de plage. ```html example.html theme={null} {% for x in range(0,5) %} {{loop.index}} {% endfor %} ``` ```text sortie rendue.txt theme={null} 1 2 3 4 5 ``` ## Utilisation des balises HubL dans des boucles Lorsque vous ajoutez une balise à une page, HubSpot attribue automatiquement un `id` au HTML d'encadrement. Cette balise est unique par nom de balise. Si vous devez utiliser une balise dans une boucle for, la définition de noms uniques n'est pas pratique. Ajoutez le paramètre `unique_in_loop` à votre balise pour générer des identifiants uniques. Ce paramètre ajoute le nom du module au numéro d'itération de la boucle en cours, ce qui garantit qu'il est unique. Les identifiants uniques ne sont pas seulement nécessaires à la validité du code HTML. Ils sont également importants pour l'[accessibilité](/docs/cms/best-practices/improve-existing-sites/accessibility). ```hubl theme={null} {% for item in module.icon_field %} {% icon name="{{ item.name }}", style="{{ item.type }}", unicode="{{ item.unicode }}", unique_in_loop=True %} {% endfor %} ``` # Opérateurs et tests d'expression Source: https://developers.hubspot.fr/docs/cms/reference/hubl/operators-and-expression-tests Afin d'étendre la logique et la fonctionnalité de vos modèles, HubL prend en charge plusieurs opérateurs et tests d'expression clés. Les opérateurs vous permettent d'exécuter des fonctions mathématiques, d'effectuer des comparaisons, de compliquer la logique des modèles et de modifier la restitution du balisage. En outre, cet article contient une liste complète des tests d'expression qui peuvent être utilisés dans HubL. Afin d'étendre la logique et la fonctionnalité de vos modèles, HubL prend en charge plusieurs opérateurs et tests d'expression clés. Les [opérateurs](/docs/cms/reference/hubl/operators-and-expression-tests#operators) vous permettent d'exécuter des fonctions mathématiques, d'effectuer des comparaisons, de compliquer la logique des modèles et de modifier la restitution du balisage. En outre, cet article contient une liste complète des [tests d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests) qui peuvent être utilisés dans HubL. ## Opérateurs Les opérateurs sont des symboles qui indiquent au compilateur HubL d'exécuter diverses opérations qui aboutissent à la sortie finale. Les opérateurs sont placés entre opérandes afin de relier les deux valeurs, que ce soit pour exécuter des fonctions mathématiques, effectuer des comparaisons ou implémenter des expressions booléennes. ![operators-and-operands-diagram](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/operators-and-operands.png) Vous trouverez ci-dessous les opérateurs que vous pouvez utiliser dans HubL, organisés par type. ### Mathématiques Les opérateurs mathématiques standard peuvent être utilisés pour calculer des valeurs dans le contexte d'un modèle. ```hubl theme={null} {% set my_num = 11 %} {% set my_number = 2 %} {{ my_num + my_number }} {{ my_num - my_number }} {{ my_num / my_number }} {{ my_num % my_number }} {{ my_num // my_number }} {{ my_num * my_number }} {{ my_num ** my_number }} ``` | Symbole | Description | | - | - | | `+` | Ajoute deux objets, généralement des valeurs numériques. Pour concaténer des chaînes ou des listes, vous devez utiliser l'[opérateur`~`](#other-hubl-operators) à la place. | | `-` | Soustrait un nombre d'un autre. | | `/` | Divise des nombres. | | `%` | Renvoie le reste de la division de nombres. | | `//` | Divise deux nombres et renvoie le résultat entier tronqué. Par exemple, `{{ 20 // 7 }}` ou `2`. | | `*` | Multiplie des nombres. | | `**` | Élève l'opérande gauche à la puissance de l'opérande droit | ### Comparaison Les opérateurs de comparaison peuvent être utilisés pour évaluer les valeurs pour la logique de modèle. Vous pouvez consulter quelques exemples d'utilisation d'opérateurs de comparaison dans les [fonctions if](/docs/cms/reference/hubl/if-statements). ```hubl theme={null} {% set my_num = 11 %} {% set my_number = 2 %} {{ my_num == my_number }} {{ my_num != my_number }} {{ my_num > my_number }} {{ my_num >= my_number }} {{ my_num < my_number }} {{ my_num <= my_number }} ``` | Symbole | sténographie | Description | | - | - | - | | `==` | eq | Égal à. Est défini sur true si les deux objets ont des valeurs égales. | | `!=` | ne | N'est pas égal à. Est défini sur true si les deux objets ne sont pas égaux. | | `>` | gt | Est supérieur à. Est défini sur true si la valeur de l'opérande gauche est supérieure à l'opérande droit. | | `>=` | gte | Est supérieur ou égal à. Est défini sur true si l'opérande gauche est supérieur ou égal à l'opérande droit. | | `<` | lt | Inférieur à. Est défini sur true si l'opérande gauche est inférieur à l'opérande droit. | | `<=` | lte | Est inférieur ou égal à. Est défini sur true si l'opérande gauche est inférieur ou égal à l'opérande droit. | > [!TIP] > > La version abrégée des opérateurs de comparaison est utilisable dans les filtres HubL qui impliquent de tester une expression comme [`|selectattr()`](/docs/cms/reference/hubl/filters#selectattr). ### Logique Les opérateurs logiques vous permettent d'implémenter des expressions booléennes ainsi que de combiner plusieurs expressions en instructions conditionnelles uniques. ```text and.txt theme={null} Two non-empty strings: {{ "a" and "b" }} Empty string and non-empty string: {{ "" and "b" }} Two non-zero numbers: {{ 1 and 2 }} Zero and non-zero number: {{ 0 and 1 }} Two non-empty lists: {{ [1] and [2] }} Empty list and non-empty list: {{ [] and [2] }} Two non-empty dicts: {{ {a: 1} and {b: 2} }} Empty dict and non-empty dict: {{ {} and {b: 2} }} ``` ```text or.txt theme={null} Two non-empty strings: {{ "a" or "b" }} Empty string and non-empty string: {{ "" or "b" }} Two non-zero numbers: {{ 1 or 2 }} Zero and non-zero number: {{ 0 or 1 }} Two non-empty lists: {{ [1] or [2] }} Empty list and non-empty list: {{ [] or [2] }} Two non-empty dicts: {{ {a: 1} or {b: 2} }} Empty dict and non-empty dict: {{ {} or {b: 2} }} ``` ```text is / is not.txt theme={null} Conditional using `is` operator: {% set string = "strings are a cat's best friend" %} {% if string is string_containing "cat" %} Meow {% else %} Woof {% endif %} Conditional using `not` operator: {% set string = "strings are a cat's best friend" %} {% if string is not string_containing "cat" %} Meow {% else %} Woof {% endif %} ``` ```text (expr).txt theme={null} {% set my_num = 10 %} {% set my_variable = 5 %} {{ (my_num + 2) * my_variable }} ``` ```text ?.txt theme={null} {% set date = local_dt %} {{ date ? date : 'No date'}} {{ todays_date ? todays_date : 'No date'}} ``` | Symbole | Description | | - | - | | `and` | Renvoie `true` si l'opérande gauche et l'opérande droit sont exacts. Dans le cas contraire, renvoie `false`. Cet opérateur ne se comporte pas comme l'opérateur `and` en Python ou l'opérateur `&&` en JavaScript. Découvrez-en davantage sur l'utilisation des opérateurs `and` ci-dessous. | | `or` | Renvoie le premier opérande s'il est exact. Sinon, renvoie le deuxième opérande. Cet opérateur est équivalent à `or` en Python et JavaScript`\|\|` Découvrez-en davantage sur l'utilisation des opérateurs `or` ci-dessous. | | `is` | Associe deux opérandes pour un énoncé affirmatif. | | `not` | Invalide une instruction conditionnelle, en conjonction avec `is`. | | `(expr)` | Regroupe une expression conditionnelle pour l'ordre des opérations. Par exemple : `(10 - 2) * variable`. | | `?` | L'[opérateur ternaire](/docs/cms/reference/hubl/if-statements) peut être utilisé pour écrire rapidement une logique conditionnelle. Il accepte 3 arguments (expression, condition true, condition false). Il évalue une expression et renvoie la condition correspondante. | **Utilisation des opérateurs et/ou** Dans HubL, l'opérateur `or` se comporte comme l'opérateur `or` en Python et l'opérateur `||` en JavaScript. Il renverra le premier opérande si l'expression conditionnelle est définie comme true, sinon il renverra le deuxième opérande. Un cas d'utilisation courant de l'opérateur `or` consiste à définir une valeur de secours lorsqu'une valeur de variable n'est pas définie. ```hubl theme={null} Two non-empty strings: {{ "a" or "b" }} Empty string and non-empty string: {{ "" or "b" }} Defining a fallback value: {{ some_variable or "default value" }} ``` Cependant, l'opérateur `and` se comporte différemment de l'opérateur `and` en Python et de l'opérateur `&&` en JavaScript. Dans HubL, `and` renvoie toujours une valeur booléenne : lorsque l'expression est évaluée comme true, `true` est renvoyée, sinon elle renvoie `false`. Les opérateurs Python et JavaScript, quant à eux, renverront une valeur d'opérande selon que l'instruction est définie sur true ou false. ```hubl theme={null} Two non-empty strings: {{ "a" and "b" }} Empty string and non-empty string: {{ "" and "b" }} ``` Dans HubL, les listes vides (`[]`) et les dictionnaires vides (`{}`) sont considérés comme faux. C'est équivalent au comportement de Python, mais différent de JavaScript, où `[]` et `{}` sont exacts. ```hubl theme={null} Empty list and non-empty list: {{ [] or [2] }} Empty dict and non-empty dict: {{ {} and {b: 2} }} ``` ### Autres opérateurs HubL Vous trouverez ci-dessous d'autres opérateurs HubL importants qui peuvent être utilisés pour effectuer diverses tâches. | Symbole | Description | | - | - | | `in` | Vérifie si une valeur se trouve dans une séquence. | | `is` | Effectue un [test d'expression](/docs/cms/reference/hubl/operators-and-expression-tests#expression-tests). | | `\|` | Applique un filtre. | | `~` | Concatène les valeurs. | ## Tests d'expression Les tests d'expression sont diverses conditions booléennes qui peuvent être évaluées à l'aide d'opérateurs logiques. ### boolean Vérifie si l'objet est booléen (au sens strict, pas dans sa capacité d'évaluation pour une expression véridique). ```text hubl.txt theme={null} {% set isActive = false %} {% if isActive is boolean %} isActive is a boolean {% endif %} ``` ```text sortie rendue.txt theme={null} isActive is a boolean ``` ### containing Vérifie si une variable de liste contient une valeur. ```text hubl.txt theme={null} {% set numbers = [1, 2, 3] %} {% if numbers is containing 2 %} Set contains 2! {% endif %} ``` ```text sortie rendue.txt theme={null} Set contains 2! ``` ### containingall Vérifie si une variable de liste contient toutes les valeurs d'une autre liste. ```text hubl.txt theme={null} {% set numbers = [1, 2, 3] %} {% if numbers is containingall [2, 3] %} Set contains 2 and 3! {% endif %} {% if numbers is containingall [2, 4] %} Set contains 2 and 4! {% endif %} ``` ```text sortie rendue.txt theme={null} Set contains 2 and 3! ``` ### defined Vérifie si une variable est définie dans le contexte du modèle. Bien que vous puissiez utiliser ce test d'expression, l'écriture d'une fonction if sans aucun opérateur aura pour effet de vérifier par défaut si la variable est définie ou non. Dans l'exemple ci-dessous, le paramètre color d'un module de couleur est testé. Si le paramètre color n'avait pas de valeur, le modèle afficherait une couleur de fond noire par défaut. S'il est défini, la couleur d'arrière-plan définie par l'utilisateur sera restituée. ```text hubl.txt theme={null} {% color "my_color" color="#930101", export_to_template_context=True %} ``` ```html example.html theme={null} ``` ### divisibleby Vérifie si un objet est divisible par un autre nombre. Par exemple, ci-dessous, une boucle for est créée pour parcourir une liste de types d'animaux. Chaque type d'animal est imprimé dans une division et un style en ligne différent est appliqué toutes les 5 divisions (largeur :100 %). Ce concept pourrait être appliqué à un blog où un balisage différent est restitué pour un certain modèle d'article. Pour en savoir plus sur les boucles for et loop.index, [consultez cet article](/docs/cms/reference/hubl/loops). ```text hubl.txt theme={null} {% set animals = ["lions", "tigers", "bears", "dogs", "sharks"] %} {% for animal in animals %} {% if loop.index is divisibleby 5 %}
      {{animal}}
      {% else %}
      {{animal}}
      {% endif %} {% endfor %} ``` ```html example.html theme={null}
      lions
      tigers
      bears
      dogs
      sharks
      ``` ### equalto Vérifie si la valeur d'une variable est égale à une constante ou à une autre variable. Vous pouvez également utiliser l'opérateur `==` pour effectuer le même test. Dans l'exemple ci-dessous, la largeur des articles du blog est ajustée en fonction du nombre total d'articles dans la boucle. L'exemple de sortie suppose qu'il y a 4 articles dans le blog. ```html example.html theme={null} {% for content in contents %} {% if loop.length is equalto 2 %}
      Post content
      {% elif loop.length is equalto 3 %}
      Post content
      {% elif loop.length is equalto 4 %}
      Post content
      {% else %}
      Post content
      Post content
      Post content
      Post content
      ``` ### even Vérifie si une variable numérique est un nombre pair. L'exemple ci-dessous montre une boucle simplifiée d'énumération de blog, où si l'itération actuelle de la boucle est paire, une classe `even-post` est attribuée à la division d'élément d'article. Autrement, une classe `odd-post` est attribuée. ```html example.html theme={null} {% for content in contents %} {% if loop.index is even %}
      Post content
      {% else %}
      Post content
      {% endif %} {% endfor %} ``` ```html example.html theme={null}
      Post content
      Post content
      Post content
      Post content
      ``` ### float Vérifie si une variable numérique est un nombre à virgule flottante. ```html example.html theme={null} {% set quantity = 1.20 %} {% if quantity is float %} quantity is a floating point number {% endif %} ``` ```html example.html theme={null} quantity is a floating-point number ``` ### integer Vérifie si une variable est un nombre entier. ```html example.html theme={null} {% set quantity = 120 %} {% if quantity is integer %} Quantity is an integer {% endif %} ``` ```html example.html theme={null} Quantity is an integer ``` ### iterable Vérifie si une variable peut être parcourue en boucle. Cet exemple vérifie une variable appelée `jobs` pour voir si elle peut être parcourue par itération. Comme la variable contient une liste de tâches, la [fonction if](/docs/cms/reference/hubl/if-statements) est définie sur `true` et la boucle s'exécute. Si la variable avait contenu une seule valeur, la fonction if aurait imprimé cette valeur avec un balisage différent à la place. [ Découvrez-en davantage sur les boucles for](/docs/cms/reference/hubl/loops). ```html example.html theme={null} {% set jobs = ["Accountant", "Developer", "Manager", "Marketing", "Support"] %} {% if jobs is iterable %}

      Available positions

        {% for job in jobs %}
      • {{ job }}
      • {% endfor %}
      {% else %}

      Available position

      {{ jobs }}
      {% endif %} ``` ```html example.html theme={null}

      Available positions

      • Accountant
      • Developer
      • Manager
      • Marketing
      • Support
      ``` ### lower Vérifie si une chaîne est en minuscules. L'exemple ci-dessous utilise une [fonction unless](/docs/cms/reference/hubl/if-statements#unless-statements) et un filtre pour vérifier qu'une chaîne de texte saisie dans un module de texte est toujours en minuscules. ```html example.html theme={null} {% module "my_text" path="@hubspot/text" label="Enter text", value="Some TEXT that should be Lowercase", export_to_template_context=True %} {% unless widget_data.my_text.value is lower %} {{ widget_data.my_text.value|lower }} {% endunless %} ``` ```text sortie rendue.txt theme={null} some text that should be lowercase ``` ### mapping Vérifie si un objet est un dictionnaire L'exemple ci-dessous vérifie si l'objet de contact est un dictionnaire. ```html example.html theme={null} {% if contact is mapping %} This object is a dictionary. {% else %} This object is not a dictionary. {% endif %} ``` ```text sortie rendue.txt theme={null} This object is a dictionary. ``` ### none Vérifie si une variable a une valeur `null`. ```html example.html theme={null} {% module "user_email" path="@hubspot/text" label="Enter user email", value="example@hubspot.com", export_to_template_context=True %} {% unless widget_data.user_email.value is none %} {{ widget_data.user_email.value }} {% endunless %} ``` ```text sortie rendue.txt theme={null} example@hubspot.com ``` ### number Vérifie si la valeur d'une variable est un nombre. L'exemple ci-dessous vérifie si une variable est ou non une variable et, si tel est le cas, la convertit en millions. ```html example.html theme={null} {% set my_var = 40 %} {% if my_var is number %} {{ my_var * 1000000 }} {% else %} my_var is not a number. {% endif %} ``` ```text sortie rendue.txt theme={null} 40000000 ``` ### odd Vérifie si une variable numérique est un nombre impair. Vous trouverez ci-dessous le même exemple que le test d'expression inverse even décrit précédemment. ```html example.html theme={null} {% for content in contents %} {% if loop.index is odd %}
      Post content
      {% else %}
      Post content
      {% endif %} {% endfor %} ``` ```html example.html theme={null}
      Post content
      Post content
      Post content
      Post content
      ``` ### sameas Vérifie si deux variables ont ou non la même valeur. L'exemple ci-dessous définit deux variables et vérifie ensuite si elles sont identiques ou non. ```text hubl.txt theme={null} {% set var_one = True %} {% set var_two = True %} {% if var_one is sameas var_two %} The variables values are the same. {% else %} The variables values are different. {% endif %} ``` ```text sortie rendue.txt theme={null} The variables values are the same. ``` ### sequence Semblable au test **iterable**, ce test d'expression vérifie si une variable est une séquence. L'exemple ci-dessous vérifie si une variable est une séquence, puis parcourt cette séquence de genres musicaux. ```html example.html theme={null} {% set genres = ["Pop", "Rock", "Disco", "Funk", "Folk", "Metal", "Jazz", "Country", "Hip-Hop", "Classical", "Soul", "Electronica" ] %} {% if genres is sequence %}

      Favorite genres

        {% for genre in genres %}
      • {{ genre }}
      • {% endfor %}
      {% else %}

      Favorite genre:

      {{ genres }}
      {% endif %} ``` ```html example.html theme={null}
      • Pop
      • Rock
      • Disco
      • Funk
      • Folk
      • Metal
      • Jazz
      • Country
      • Hip-Hop
      • Classical
      • Soul
      • Electronica
      ``` ### chaîne Vérifie si la valeur stockée dans une variable est du texte. L'exemple ci-dessous vérifie si une variable est une chaîne de caractères et, si tel est le cas, applique un filtre de titre pour modifier la capitalisation. ```text hubl.txt theme={null} {% set my_var = "title of section" %} {% if my_var is string %} {{ my_var|title }} {% else %} my_var is not a string {% endif %} ``` ```text sortie rendue.txt theme={null} Title Of Section ``` ### string\_containing Vérifie si une sous-chaîne fournie est contenue dans une autre chaîne. Ce test d'expression est utilisé en conjonction avec l'opérateur `is`. ```text hubl.txt theme={null} {% if content.domain is string_containing ".es" %} Markup that will only render on content hosted on .es domains {% elif content.domain is string_containing ".jp" %} Markup that will only render on content hosted on .jp domains {% else %} Markup that will render on all other domains {% endif %} ``` ```text sortie rendue.txt theme={null} Markup that will render on all other domains ``` ### string\_startingwith Vérifie si une chaîne commence par une chaîne particulière. Il est utilisé en conjonction avec l'opérateur `is`. ```text hubl.txt theme={null} {% if content.slug is string_startingwith "es/" %} Markup that will only render on content hosted in a /es/ subdirectory {% elif content.slug is string_startingwith "jp/" %} Markup that will only render on content hosted in a /jp/ subdirectory {% else %} Markup that will render on all subdirectories {% endif %} ``` ```text sortie rendue.txt theme={null} Markup that will render on all subdirectories ``` ### truthy Vérifie si une expression est égale à `True`. L'exemple ci-dessous utilise un module de case à cocher booléenne pour afficher un message d'alerte. ```html example.html theme={null} {% boolean "check_box" label="Show alert", value=True, export_to_template_context=True %} {% if widget_data.check_box.value is truthy %}
      Danger!
      {% endif %} ``` ```html example.html theme={null}
      Danger!
      ``` ### undefined Vérifie si une variable est indéfinie dans le contexte du modèle. Ce test est différent du test d'expression `none`, dans la mesure où le test undefined est défini sur `true` lorsque la variable est présente mais n'a pas de valeur, alors que none est défini sur `true` lorsque la variable a une valeur nulle. L'exemple ci-dessous vérifie l'existence de la variable "my\_var" dans un modèle. ```text hubl.txt theme={null} {% if my_var is undefined %} A variable named "my_var" does not exist on this template. {% else %} {{ my_var }} {% endif %} ``` ```text sortie rendue.txt theme={null} A variable named "my_var" does not exist on this template. ``` ### upper Vérifie si une chaîne est entièrement en majuscules. Vous trouverez ci-dessous un exemple inverse du test d'expression `lower` [ci-dessus](#lower). ```text hubl.txt theme={null} {% module "my_text" path="@hubspot/text" label="Enter text", value="Some TEXT that should be Uppercase", export_to_template_context=True %} {% unless widget_data.my_text.value is upper %} {{ widget_data.my_text.value|upper }} {% endunless %} ``` ```text sortie rendue.txt theme={null} SOME TEXT THAT SHOULD BE UPPERCASE ``` ### within Vérifie si une variable est présente dans une liste. ```text hubl.txt theme={null} {% set numbers = [1, 2, 3] %} {% if 2 is within numbers %} 2 is in the list! {% endif %} {% if 4 is within numbers %} 4 is in the list! {% endif %} ``` ```text sortie rendue.txt theme={null} 2 is in the list! ``` # HubL Syntax Source: https://developers.hubspot.fr/docs/cms/reference/hubl/overview # Balises HubL de la zone de glisser-déposer Source: https://developers.hubspot.fr/docs/cms/reference/hubl/tags/dnd-areas Les balises HubL sont utilisées pour construire des zones de glisser-déposer qui permettent aux développeurs de créer des sections de pages qui prennent en charge les modifications de mise en page, de style et de contenu directement dans les éditeurs de contenu. [Les zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) permettent aux développeurs de créer des sections de pages et des partials globaux qui prennent en charge les modifications de mise en page, de style et de contenu directement dans les éditeurs de contenu. Voir le [tutoriel sur la création d'une zone de glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial) pour une introduction à la création de zones de glisser-déposer. Les zones de glisser-déposer sont basées sur une grille réactive à 12 colonnes. Les balises par glisser-déposer rendent le balisage avec des noms de classe désignant les colonnes et les lignes. Vous devrez ajouter une feuille de style pour cibler ces noms de classe. Un exemple de styles de mise en page que vous pouvez mettre en œuvre se trouve dans le [Boilerplate de CMS Hub](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/css/objects/_layout.css). Votre feuille de style peut être ajoutée au modèle en utilisant [`{{ require_css() }}`](/docs/cms/reference/hubl/tags/standard-tags#require-css). > [!WARNING] > > ### Remarque: > > Les zones de glisser-déposer ne peuvent pas être utilisées dans des [articles de blog](/docs/cms/start-building/building-blocks/templates/blog) et [modèles d'e-mails](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#email) pour le moment. ## dnd\_area Une [zone de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) est un conteneur qui rend une partie de la page web modifiable en termes de structure, de conception et de contenu. Le corps d'une balise `{% dnd_area %}` fournit le contenu par défaut de la zone de glisser-déposer. Les modules eux-mêmes ne peuvent pas contenir de zones de glisser-déposer. Pour fournir aux créateurs de contenu une interface permettant d'ajouter du contenu uniforme dans un module, utilisez plutôt des [champs et des groupes reproductibles](/docs/cms/reference/fields/module-theme-fields#repeaters). Une balise `dnd_area` peut contenir les paramètres suivants : | Paramètre | Type | Description | | - | - | - | | `class` | Chaîne | Une classe ajoutée avec la balise div d'une dnd\_area | | `label` | Chaîne | Utilisé dans l'éditeur pour libeller la zone dans la barre latérale. | ```text entrée.txt theme={null} {% dnd_area "unique_name", class="main" %} {% end_dnd_area %} ``` ```text résultat.txt theme={null}
      ``` Les balises `dnd_area` peuvent également contenir des balises `dnd_section`. > [!WARNING] > > ### Remarque: > > Un créateur de contenu peut échanger le modèle d'une page contre un autre modèle du même type, selon qu'il possède ou non des balises [dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas). > > * Les modèles construits avec l'éditeur visuel de mise en page par glisser-déposer peuvent être remplacés par d'autres modèles par glisser-déposer ou par des modèles codés avec ou sans les balises `dnd_area`. > * Les modèles codés avec des balises *dnd\_area* ne peuvent être échangés que contre d'autres modèles codés avec des balises `dnd_area`. > * Les modèles codés sans balises `dnd_area` ne peuvent être échangés que contre d'autres modèles codés sans balises `dnd_area`. ## dnd\_section [`{% dnd_section %}`](/docs/cms/start-building/building-blocks/sections/sections) est une ligne de niveau supérieur qui doit être imbriquée dans une balise `{% dnd_area %}`. [Les sections peuvent également être définies comme un modèle](/docs/cms/start-building/building-blocks/sections/sections#section-templates), puis [incluses](/docs/cms/start-building/building-blocks/sections/sections#section-context) dans une `dnd_area`, ce qui les rend idéales pour élaborer rapidement un modèle. Une balise `dnd_section` peut contenir les paramètres suivants : | Paramètre | Type | Description | | - | - | - | | `background_color` | Dict | Un dictionnaire qui permet de spécifier une [couleur d'arrière-plan](#background-color). Peut également être fourni en tant que chaîne. | | `background_image` | Dict | Un dictionnaire qui permet de spécifier une [image d'arrière-plan](#background-image). | | `background_linear_gradient` | Dict | Un dictionnaire qui permet de spécifier un [arrière-plan à dégradé linéaire](#background-linear-gradient). | | `full_width` | Booléen | Un booléen qui détermine si la section est destinée à être pleine page ou limitée par un conteneur interne. | | `margin` | Dict | Un dictionnaire qui permet de spécifier les valeurs de marge dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `max_width` | Entier | Une valeur en pixels qui définit la largeur maximale d'un contenu sur une balise dict. | | `padding` | Dict | Un dictionnaire qui permet de spécifier les valeurs de rembourrage dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `vertical_alignment` | Chaîne | Alignement vertical du contenu enfant. Les options disponibles incluent :
      • `TOP`
      • `MIDDLE`
      • `BOTTOM`
      | > [!WARNING] > > ### Remarque: > > Vous ne pouvez utiliser qu'un seul paramètre d'arrière-plan par balise `dnd_section`. ```text entrée.txt theme={null} {% dnd_section background_image={ "backgroundPosition": "MIDDLE_CENTER", "backgroundSize": "cover", "imageUrl": "https://example.com/path/to/image.jpg" }, margin={ "top": 32, "bottom": 32 }, padding={ "top": "1em", "bottom": "1em", "left": "1em", "right": "1em" }, max_width=1200, vertical_alignment="MIDDLE" %} {% end_dnd_section %} ``` ```text résultat.txt theme={null}
      ``` Les balises`dnd_section` peuvent également contenir les balises suivantes : * `dnd_column` * `dnd_module` ## dnd\_column [`{% dnd_column %}`](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#column) est un bloc de construction structurel vertical qui occupe une ou plusieurs colonnes de mise en page définies par sa ligne parent. Cette balise HubL doit être imbriquée dans une balise `{% dnd_area %}`. Une balise `dnd_column` peut contenir les paramètres suivants : | Paramètre | Type | Description | | - | - | - | | `background_color` | Dict | Un dictionnaire qui permet de spécifier une [couleur d'arrière-plan](#background-color). | | `background_image` | Dict | Un dictionnaire qui permet de spécifier une [image d'arrière-plan](#background-image). | | `background_linear_gradient` | Dict | Un dictionnaire qui permet de spécifier un [arrière-plan à dégradé linéaire](#background-linear-gradient). | | `margin` | Dict | Un dictionnaire qui permet de spécifier les valeurs de marge dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `max_width` | Entier | Une valeur en pixels qui définit la largeur maximale d'un contenu sur une balise dict. | | `padding` | Dict | Un dictionnaire qui permet de spécifier les valeurs de remplissage dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `vertical_alignment` | Chaîne | Alignement vertical du contenu enfant. Les options disponibles incluent :
      • `TOP`
      • `MIDDLE`
      • `BOTTOM`
      | > [!WARNING] > > ### Remarque: > > Vous ne pouvez utiliser qu'un seul paramètre d'arrière-plan par balise `dnd_column`. ```text entrée.txt theme={null} {% dnd_column offset=0, width=12, background_color={ r: 255, g: 0, b: 0, a: 1 }, margin={ "top": "1em", "bottom": "1em" }, %} {% end_dnd_column %} ``` ```text résultat.txt theme={null}
      ``` Une balise `dnd_column` peut également contenir `dnd_row`. ## dnd\_row [`{% dnd_row %}`](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#row) est un bloc de construction structurel horizontal qui crée une grille de mise en page imbriquée à 12 colonnes dans laquelle des colonnes et des modules peuvent être placés. Cette balise HubL doit être imbriquée dans une balise `{% dnd_area %}`. Une balise `dnd_row` peut inclure les paramètres suivants : | Paramètre | Type | Description | | - | - | - | | `background_color` | Dict | Un dictionnaire qui permet de spécifier une [couleur d'arrière-plan](#background-color). | | `background_image` | Dict | Un dictionnaire qui permet de spécifier une [image d'arrière-plan](#background-image). | | `background_linear_gradient` | Dict | Un dictionnaire qui permet de spécifier un [arrière-plan à dégradé linéaire](#background-linear-gradient). | | `margin` | Dict | Un dictionnaire qui permet de spécifier les valeurs de marge dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `max_width` | Entier | Une valeur en pixels qui définit la largeur maximale d'un contenu sur une balise dict. | | `padding` | Dict | Un dictionnaire qui permet de spécifier les valeurs de remplissage dans `cm`, `mm`, `Q`, `in`, `pc`, `pt`, `px`, `em`, `ex`, `ch`, `rem`, `lh`, `vw`, `vh`, `vmin`, `vmax` et `%`. Si aucune unité de mesure n'est fournie, la valeur par défaut est `px`. | | `vertical_alignment` | Chaîne | Alignement vertical du contenu enfant. Les options disponibles incluent :
      • `TOP`
      • `MIDDLE`
      • `BOTTOM`
      | > [!WARNING] > > ### Remarque: > > Vous ne pouvez utiliser qu'un seul paramètre d'arrière-plan par balise `dnd_row`. ```text entrée.txt theme={null} {% dnd_row background_color={ r: 123, g: 123, b: 123, a: 1.0 }, margin={ "top": 20, "bottom": 200 }, padding={ "top": 20, "bottom": 200, "left": 20, "right": 20 } %} {% end_dnd_row %} ``` ```text résultat.txt theme={null}
      ``` Une balise dnd\_row peut également contenir les balises suivantes : * `dnd_column` * `dnd_module` ## dnd\_module [`{% dnd_module %}`](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview#module) est un [module](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview) enveloppé dans un div où la mise en page, les styles et le contenu peuvent être ajoutés. Le module est spécifié en faisant référence à son chemin d'accès, qui peut être soit un module par défaut de HubSpot (en utilisant l'espace de noms `@hubspot/`), soit des modules que vous avez construits, en spécifiant leur chemin d'accès dans l'arborescence des fichiers du gestionnaire de conception. Cette balise HubL doit être imbriquée dans une balise `{% dnd_area %}`. Une balise `dnd_module` peut contenir les paramètres suivants : | Paramètre | Type | Description | | - | - | - | | `path` | Chaîne | Chemin d'accès à un module. | | `horizontal_alignment` | Chaîne | Positionnement horizontal, prend en charge : `LEFT`, `CENTER` et `RIGHT` | | `offset` | Entier | Décalage par rapport à 0 dans la grille à 12 colonnes. | | `width` | Entier | Nombre de colonnes occupant la grille de 12 colonnes. | | `flexbox_positioning` | Chaîne | **Obsolète, ne pas utiliser.** Utilisez plutôt `horizontal_alignment` en tandem avec l'élément `vertical_alignment` de la ligne ou de la section. Valeur de la position Flexbox pour le module. Chaîne compatible indiquant la position verticale suivie de la position horizontale :
      • `TOP_LEFT`
      • `TOP_CENTER`
      • `TOP_RIGHT`
      • `MIDDLE_LEFT`
      • `MIDDLE_CENTER`
      • `MIDDLE_RIGHT`
      • `BOTTOM_LEFT`
      • `BOTTOM_CENTER`
      • `BOTTOM_RIGHT`
      | > [!TIP] > > Vous avez un ancien module dont le nom de champ correspond à l'un des paramètres `dnd_module` ci-dessus ? Vous pouvez [transmettre des valeurs par défaut par le biais d'un paramètre de champ](/docs/cms/reference/modules/using-modules-in-templates#passing-fields-that-have-dnd-associated-parameters), tout comme vous le feriez pour un groupe de champs. ```text entrée.txt theme={null} {% dnd_module path="@hubspot/rich_text", offset=0, width=8, %} {% module_attribute "html" %}

      Hello, world!

      {% end_module_attribute %} {% end_dnd_module %} ``` ```text résultat.txt theme={null}

      Hello, world!

      ``` ## Milieu social Il existe plusieurs façons de définir des arrière-plans pour les éléments de colonne, de section et de ligne du tableau de bord, [`background_image`](#background-image), [`background_linear_gradient`](#background-linear-gradient) et [`background_color`](#background-color). ### background\_color Les balises dnd de colonne, de section et de ligne prennent en charge les couleurs d'arrière-plan. Vous pouvez définir la couleur d'arrière-plan par défaut pour un élément de glisser-déposer en utilisant `background_color`. Ce paramètre est un paramètre basé sur une chaîne de caractères et peut inclure les formats suivants décrits dans l'exemple ci-dessous. ```hubl theme={null} {% dnd_section %} // Hex Value (both 3 and 6 char length) {% dnd_column background_color="#F7F7F7" %} {% end_dnd_column %} {% dnd_column background_color="#FFF" %} {% end_dnd_column %} // Both RGB and RGBA {% dnd_column background_color="rgb(255,255,255)" %} {% end_dnd_column %} {% dnd_column background_color="rgba(0,0,0,.25)" %} {% end_dnd_column %} {% end_dnd_section %} ``` ### background\_linear\_gradient Les éléments dnd de colonne, de section et de ligne prennent en charge les dégradés linéaires d'arrière-plan. Vous pouvez définir un dégradé par défaut à l'aide du paramètre `background_linear_gradient`. Le paramètre attend un dictionnaire. Actuellement, il ne prend en charge que les arrêts de deux couleurs. | Paramètre | Type | Description | | - | - | - | | `direction` | Chaîne | La direction du dégradé.
      • `to bottom`
      • `to top`
      • `to left`
      • `to right`
      | | `colors` | Tableau | Tableau de chaînes de couleurs. Actuellement, il prend en charge 2 valeurs, le début et la fin. Les valeurs sont fournies sous forme de chaînes de caractères, et les formats suivants sont pris en charge :
      • `RGB`
      • `RGBA`
      • `3 char hex`
      • `6 char hex`
      • `8 char hex`
      | ```hubl theme={null} {% dnd_section background_linear_gradient={ "direction": "to bottom", "colors": [ "#1EB6C3", "#2A2859" ] } %} {% dnd_module path="@hubspot/rich_text" width="6" %} {% end_dnd_module %} {% end_dnd_section %} ``` ### background\_image Les éléments dnd de colonne, de section et de ligne prennent en charge les images d'arrière-plan. Vous pouvez fournir une image d'arrière-plan par défaut en utilisant le paramètre `background_image` qui attend un dictionnaire. | Clé | Type | Description | | - | - | - | | `backgroundPosition` | Chaîne | La position de l'image en arrière-plan. Prend en charge une chaîne indiquant la position verticale suivie de la position horizontale.
      • `TOP_LEFT`
      • `TOP_CENTER`
      • `TOP_RIGHT`
      • `MIDDLE_LEFT`
      • `MIDDLE_CENTER`
      • `MIDDLE_RIGHT`
      • `BOTTOM_LEFT`
      • `BOTTOM_CENTER`
      • `BOTTOM_RIGHT`
      | | `backgroundSize` | Chaîne | Propriété de taille d'arrière-plan de la CSS utilisée pour l'image. Valeurs prises en charge :
      • `cover`
      • `contain`
      • `auto`
      | | `imageUrl` | Chaîne | URL absolue de l'image. | ```hubl theme={null} {% dnd_section background_image = { "backgroundPosition": "MIDDLE_CENTER", "backgroundSize": "cover", "imageUrl": "https://www.example.com/bg-image.jpg" }, %} {% dnd_module path="@hubspot/rich_text" width="6" %} {% end_dnd_module %} {% end_dnd_section %} ``` ## Comment les paramètres de style dnd se traduisent sur la page Lorsque vous utilisez des paramètres basés sur le style, tels que les [arrière-plans](#background), les marges ou le remplissage, les noms de classe sont automatiquement calculés pour vos sections, colonnes, lignes et modules. Les valeurs de propriété que vous avez assignées sont alors ajoutées à ces noms de classe créés automatiquement et le code CSS qui en résulte est ensuite placé devant la balise de fermeture `` de la page dans une balise `
      dharmesh.jpeg

      " The Content Optimization System matches content with context to create a highly personalized, relevant and meaningful customer experience. "

      Dharmesh Shah, HubSpot
      ``` | Paramètre | Type | Description | | - | - | - | | `module_id` | Chaîne | L'ID du module à restituer. | | `path` | Chaîne | Le chemin d'accès du module à restituer. Incluez le slash de début pour un chemin absolu. Autrement, le chemin sera relatif au modèle. Référencez les modules par défaut de HubSpot avec des chemins correspondant à leurs balises HubL, comme : @hubspot/rich\_text, @hubspot/linked\_image, etc. | ## Variables d'éditeur Pour restituer un contenu de variable pour un module dans l'éditeur, vous pouvez ajouter un contenu par défaut aux champs de module ou utiliser la balise HubL `editor_placeholder`. Cette balise peut être utile lorsque le module n'a pas de contenu par défaut ou n'en a pas besoin, ou pour simplifier la création du module. ![module-placeholder-content](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/editor-placeholder-appearance-example-2.png) Pour ajouter une variable d'éditeur à un module personnalisé, ajoutez d'abord une [fonction if](/docs/cms/reference/hubl/if-statements) au code HTML du module afin d'afficher la variable lorsqu'aucun contenu n'est sélectionné dans l'éditeur. Par exemple, le code suivant peut être utilisé pour ajouter une variable d'éditeur à un module CTA : ```hubl theme={null} {% if module.label %} {% cta guid="{{ module.guid }}" label="my_cta" %} {% elif is_in_editor %} {% editor_placeholder %} {% endif %} ``` > [!NOTE] > > La première instruction conditionnelle `if` indique si le module est présent. Ensuite, l'instruction conditionnelle `elif` indique si le module est rendu dans le contexte de l'éditeur à l'aide de la variable `is_in_editor`. > > Cette variable renvoie `true` si le contenu est en cours de rendu dans n'importe quel éditeur de contenu, mais vous pouvez être plus spécifique avec d'autres [variables d'éditeurs et de prévisualisation intégrées à l'application](/docs/cms/reference/hubl/variables#in-app-editor-and-preview-variables). Ensuite, définissez le contenu de la variable dans le fichier du module `meta.json`. ```json theme={null} { "global": false, "host_template_types": ["PAGE"], "module_id": 62170380654, "is_available_for_new_content": true, "placeholder": { "show_module_icon": true, "title": "Call to action", "description": "Select a CTA" } } ``` | Paramètre | Type | Description | | - | - | - | | `show_module_icon` | Booléen | Permet d'indiquer s'il faut afficher l'icône du module. | | `title` | Chaîne | Le titre qui s'affiche dans la variable. | | `description` | Chaîne | La description qui s'affiche dans l'espace réservé. | ## Colonne flexible Les colonnes flexibles sont des colonnes verticales dans un modèle qui permettent aux créateurs de contenu d'insérer et de supprimer des modules sur la page à l'aide de l'[éditeur de contenu](https://knowledge.hubspot.com/fr/website-pages/edit-page-content-in-a-drag-and-drop-area). Lorsque vous codez une colonne flexible avec HubL, vous pouvez choisir d'encadrer d'autres modules HubL pour qu'ils apparaissent par défaut dans la colonne flexible. L'exemple de code ci-dessous illustre la syntaxe de base et un exemple de colonne flexible avec un module de texte enrichi et de formulaire contenu par défaut. Notez que les colonnes flexibles ne peuvent être ajoutées qu'aux modèles de page, et pas aux modèles de blog ou d'e-mail. Les modules ne peuvent pas contenir de colonnes flexibles, mais peuvent contenir des [champs et des groupes reproductibles](/docs/cms/reference/fields/module-theme-fields#repeaters), qui offrent une fonctionnalité similaire. ```text entrée.txt theme={null} {% widget_container "my_flexible_column" label="My flex column"%} {% module "rich_text" path="@hubspot/rich_text" %} {% module "linked_image" path="@hubspot/linked_image" %} {% end_widget_container %} ``` ```text résultat.txt theme={null}

      Something Powerful

      Tell The Reader More

      The headline and subheader tells us what you're offering, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.

      Remember:

      • Bullets are great
      • For spelling out benefits and
      • Turning visitors into leads.
      placeholder_200x200
      ``` > [!WARNING] > > ### Remarque : > > Lors de l'utilisation de cette balise, l'élément `label` doit respecter la valeur `name` pour que la colonne flexible fonctionne dans l'éditeur de contenu. Par exemple, la syntaxe suivante n'est pas valide : > > `[% widget_container label="My label" "my_flexible_column" %}` ## Formulaire Permet aux utilisateurs de sélectionner un formulaire HubSpot à ajouter à leur page. Le code ci-dessous inclut un exemple d'utilisation de la syntaxe de balise HubL standard et un exemple d'utilisation de la [syntaxe de bloc](/docs/cms/reference/modules/using-modules-in-templates#block-syntax). ```text entrée.txt theme={null} {% form "my_form" form_to_use="{formID}", title="Free Trial" %} {% module_block form "my_form" form_follow_ups_follow_up_type="", form_to_use="9e633e9f-0634-498e-917c-f01e355e83c6", title="Free Trial", notifications_are_overridden=True, response_message="Thanks for submitting the form.", response_type="inline", overrideable=True, gotowebinar_webinar_key="", webinar_id="", webinar_source"", label="Form" %} {% module_attribute "notifications_override_email_addresses" is_json=True %} ["email_address@website.com"] {% end_module_attribute %} {% end_module_block %} ``` ```text résultat.txt theme={null}

      Free Trial

      ``` | Paramètre | Type | Description | | - | - | - | | `form_key` | Chaîne | Permet d'indiquer un ID unique pour le formulaire au niveau de la page. | | `form_to_use` | Chaîne | Permet d'indiquer le formulaire à charger par défaut, en fonction de l'ID du formulaire. Cet ID est disponible dans l'URL de l'éditeur de formulaire de chaque formulaire. | | `title` | Chaîne | Permet d'ajouter une balise d'en-tête `h3` au-dessus du formulaire. | | `no_title` | Booléen | Si la valeur est définie sur `True`, la balise h3 au-dessus du titre est supprimée. | | `form_follow_ups_follow_up_type` | Énumération | Permet d'indiquer les actions de suivi telles que l'inscription d'un contact dans un workflow ou l'envoi d'un simple e-mail de suivi. Les valeurs possibles sont `no_action`, `simple` et `automation`. | | `simple_email_for_live_id` | Nombre | Permet d'indiquer l'ID de l'e-mail de suivi simple pour la page en direct. | | `simple_email_for_buffer_id` | Nombre | Permet d'indiquer l'ID de l'e-mail de suivi simple pour la version d'auto-enregistrement d'une page. | | `follow_up_type_simple` | Booléen | Si la valeur est définie sur vrai, active un e-mail de suivi simple. Alternative à `form_follow_ups_follow_up_type`. | | `follow_up_type_automation` | Booléen | Si la valeur est définie sur vrai, inscrit les soumissions dans un workflow. Alternative à `form_follow_ups_follow_up_type`. | | `simple_email_campaign_id` | Nombre | Permet d'indiquer l'ID de l'e-mail de suivi simple. Alternative à `simple_email_for_live_id`. | | `form_follow_ups_workflow_id` | Nombre | Permet d'indiquer l'ID du workflow dans lequel inscrire les soumissions. | | `response_redirect_url` | Chaîne | En cas de redirection vers une page externe, ce paramètre indique l'URL vers laquelle la redirection doit être effectuée. | | `response_redirect_id` | Nombre | Si vous redirigez vers une page hébergée par HubSpot, ce paramètre indique l'ID de la page en question. L'ID de la page est disponible dans l'URL de l'éditeur de page de chaque page. | | `response_response_type` | Énumération | Permet de déterminer s'il faut rediriger vers une autre page ou afficher un message de remerciement intraligne lors de la soumission. La valeur de ce paramètre doit être `"redirect"` ou `"inline"` (par défaut). | | `response_message` | Chaîne | Permet de définir un message de remerciement intraligne. Ce paramètre prend en charge le HTML. | | `notifications_are_overridden` | Booléen | Si la valeur est définie sur `True`, le formulaire enverra des notifications de formulaire aux adresses e-mail indiquées sélectionnées dans le paramètre `notifications_override_email_addresses`, au lieu des paramètres par défaut du formulaire La valeur par défaut est `False`. | | `notifications_override_guid_buffer` | Chaîne | L'ID des paramètres de remplacement dans la version d'auto-enregistrement de la page. | | `notifications_override_guid` | Chaîne | L'ID des paramètres de remplacement dans la version en ligne de la page. | | `notifications_override_email_addresses` | JSON | La syntaxe de bloc prend en charge une liste JSON de destinataires d'e-mails qui seront notifiés lors de la soumission du formulaire. Ces adresses e-mail remplacent les paramètres de notification par e-mail définis dans le formulaire. | | `sfdc_campaign` | Chaîne | Permet d'indiquer la campagne Salesforce dans laquelle inscrire les contacts qui soumettent le formulaire. La valeur de ce paramètre doit être l'ID de la campagne SFDC et n'est disponible que pour les comptes qui sont [intégrés à Salesforce](https://knowledge.hubspot.com/fr/salesforce/install-the-hubspot-salesforce-integration). | | `gotowebinar_webinar_key` | String | Spécifie le webinar GoToWebinar auquel inscrire les contacts après soumission du formulaire. Disponible uniquement pour les comptes utilisant l'[intégration GoToWebinar](https://knowledge.hubspot.com/fr/integrations/use-the-gotowebinar-integration-with-hubspot). | | `webinar_id` | Chaîne | Champ plus générique qui spécifie l'ID du webinar Microsoft Teams ou GoToWebinar auquel inscrire les contacts après soumission du formulaire. Disponible uniquement pour les comptes utilisant les intégrations [GoToWebinar](https://knowledge.hubspot.com/fr/integrations/use-the-gotowebinar-integration-with-hubspot) ou [Microsoft Teams](https://knowledge.hubspot.com/fr/integrations/connect-hubspot-and-microsoft-teams). Lorsque `support_all_webinar_types` est défini sur `true` dans la [définition des champs de formulaire](/docs/cms/reference/fields/module-theme-fields#form). | | `webinar_source` | String | L'ID de l'application d'intégration, soit GoToWebinar (`35161`) ou Microsoft Teams (`221635`). | ## Pied de page Restitue les informations de droits d'auteur avec l'année et le nom de l'entreprise indiqués dans les [paramètres d'e-mail marketing du compte](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers#edit-your-default-email-footer-information-in-your-settings). ```text entrée.txt theme={null} {% page_footer "page_footer" %} ``` ```text résultat.txt theme={null}
      © 2020 HubSpot
      ``` ## Galerie Génère une balise de galerie HubSpot. Cette balise de galerie est basée sur [Slick](http://kenwheeler.github.io/slick/). Alors que vous pouvez créer un module de galerie avec la syntaxe de module HubL standard, si vous souhaitez prédéfinir des diapositives par défaut en utilisant HubL, vous devez utiliser la syntaxe de bloc. Les deux méthodes sont présentées ci-dessous. Les images de la galerie sont chargées de manière asynchrone à l'aide de JavaScript. ```text entrée.txt theme={null} {% gallery "crm_gallery" %} <-- Block syntax --> {% widget_block gallery "Gallery" display_mode="standard" sizing="static", transition="slide", caption_position="below", auto_advance=True, overrideable=True, description_text="", show_pagination=True, label="Gallery", loop_slides=True, num_seconds=5 %} {% widget_attribute "slides" is_json=True %} [{ "caption": "CRM Contacts App", "show_caption": true, "link_url": "http://www.hubspot.com/crm", "alt_text": "Screenshot of CRM Contacts", "img_src": "http://go.hubspot.com/hubfs/Contacts-View-1.png?t=1430860504240", "open_in_new_tab": true }, { "caption": "HubSpot CRM Contact Profile", "show_caption": true, "link_url": "http://www.hubspot.com/", "alt_text": "HubSpot CRM Contact Profile", "img_src": "http://cdn2.hubspot.net/hubfs/53/Contact-Profile.png?t=1430860504240", "open_in_new_tab": true }] {% end_widget_attribute %} {% end_widget_block %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `slides` | JSON | Une liste JSON de la légende par défaut, de l'URL du lien, du texte alternatif, de l'image source et de l'ouverture ou non dans un nouvel onglet. Consultez la syntaxe de bloc ci-dessus. | | | `loop_slides` | Booléen | Si la valeur est définie sur vrai, les diapositives sont passées en boucle. | `True` | | `num_seconds` | Nombre | Le temps de pause entre les diapositives, en secondes. | `5` | | `show_pagination` | Booléen | Permet de proposer des boutons sous le curseur pour naviguer entre les diapositives. | `True` | | `sizing` | Énumération | Permet de détermine si le curseur change de taille, en fonction de la hauteur des diapositives. Les valeurs possibles sont « statique » ou « redimensionner ». | `"static"` | | `auto_advance` | Booléen | Permet d'avancer automatique des diapositives après le temps défini dans num\_seconds. | `False` | | `transition` | Énumération | Permet de définir le type de transition de la diapositive. Les valeurs possibles sont « fondu » ou « diapositive ». | `"slide"` | | `caption_position` | Énumération | Permet d'affecter le positionnement de la légende sur ou sous la diapositive. Les valeurs possibles sont « ci-dessous » ou « superposer ». | `"below"` | | `display_mode` | Énumération | Permet de déterminer la façon dont la galerie d'images sera affichée. Les valeurs possibles sont « standard », « galerie » ou « vignette ». | `"standard"` | | `lightboxRows` | Nombre | Si « display\_mode » est défini sur « galerie », ce paramètre contrôle le nombre de lignes affichées dans la galerie. | `3` | ## En-tête Génère un module d'en-tête qui restituera le texte sous forme de balise h1-h6. ```text entrée.txt theme={null} {% header "header" %} {% header "my_header" header_tag="h1", overrideable=True, value="A clear and bold header", label="Header" %} ``` ```text résultat.txt theme={null}

      A clear and bold header

      ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header_tag` | Chaîne | Permet de sélectionner la balise d'en-tête à restituer. Les valeurs possibles sont h1, h2, h3, h4, h5 ou h6. | `h1` | | `value` | Chaîne | Permet de restituer le texte par défaut dans le module d'en-tête. | `"A clear bold header"` | ## Icône Ajoute une balise d'icône qui permet aux utilisateurs de sélectionner une icône à utiliser. Les ensembles d'icônes pris en charge sont les suivants : FontAwesome [5.0.10](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.0.10), [5.14.0](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.14.0) et [6.4.2](https://github.com/FortAwesome/Font-Awesome/releases/tag/6.4.2). Cette balise ne peut pas être utilisée dans les modules conçus pour les e-mails. ```text entrée.txt theme={null} {% icon name="Accessible Icon" style="REGULAR" unicode="f368" icon_set="fontawesome-5.14.0" purpose="decorative" title="Accessible Icon" %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `name` | Chaîne | Le nom de l'icône. | | | `style` | Chaîne | Le style de l'icône. Valeurs possibles : `REGULAR` ou `SOLID` | `REGULAR` | | `unicode` | Chaîne | La représentation en caractères Unicode de l'icône. | | | `icon_set` | Chaîne | Le jeu d'icônes FontAwesome à utiliser. Les valeurs possibles sont :
      • `fontawesome-5.14.0`
      • `fontawesome-5.0.10`
      • `fontawesome-6.4.2`
      | | | `purpose` | Chaîne | L'objectif de l'icône, utilisé pour l'[accessibilité](https://docs.fontawesome.com/v5/web/other-topics/accessibility). Les valeurs possibles sont : `decorative` ou `semantic`. Si la valeur est définie sur `decorative`, un attribut supplémentaire `aria-hidden="true"` sera ajouté à l'icône. | `decorative` | | `title` | Chaîne | L'élément de titre du fichier SVG de l'icône ainsi qu'un attribut `labelledby` qui pointe vers le titre. | | ## Image Crée une balise d'image qui permet aux utilisateurs de sélectionner une image dans l'éditeur de contenu. Si vous souhaitez que l'image soit liée à une URL de destination, vous devez utiliser linked\_image ci-dessous. ```text entrée.txt theme={null} {% image "image" %} {% image "executive_image" label="Executive photo", alt="Photo of Brian Halligan", src="//cdn2.hubspot.net/hub/53/file-733888619-jpg/assets/hubspot.com/about/management/brian-home.jpg", width="300" %} ``` ```text résultat.txt theme={null} Photo of Brian Halligan ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `alt` | Chaîne | Permet de définir le texte alternatif par défaut pour l'image. | | | `src` | Chaîne | Permet d'ajouter l'attribut de source de la balise img. | | | `width` | Nombre | Permet de définir l'attribut de largeur de la balise img. | `The width of the image` | | `height` | Nombre | Permet de définir une hauteur minimale dans un attribut de style de la balise img pour les **modèles d'e-mail uniquement**. | `The height of the image` | | `hspace` | Nombre | Permet de définir l'attribut hspace de la balise img. | | | `align` | Chaîne | Permet de définir l'attribut d'alignement de la balise img. Les valeurs possibles sont left, right ou center. | | | `style` | Chaîne | Permet d'ajouter des déclarations CSS intraligne à la balise img. Par exemple : style="border:1px solid blue; margin:10px | | | `loading` | Chaîne | Permet de contrôler l'attribut de chargement de l'élément img. [Utilisé pour le chargement en différé basé sur le navigateur.](/docs/cms/best-practices/testing-staging-performance/lazy-loading) | | ## Source d'image Un module de source d'image crée un sélecteur d'image dans l'éditeur de contenu, mais plutôt que d'imprimer une balise img, il restitue l'URL de l'image. Cette balise est généralement utilisée avec le paramètre `no_wrapper=True`, de sorte que la source de l'image puisse être ajoutée à une CSS intraligne ou à d'autres balises. Une alternative à l'utilisation de cette balise est d'utiliser le paramètre [`export_to_template_context`](/docs/cms/reference/modules/export-to-template-context). ```text entrée.txt theme={null} {% image_src "image_src" %} {% image_src "executve_image_src" src="//cdn2.hubspot.net/hub/53/file-733888614-jpg/assets/hubspot.com/about/management/dharmesh-home.jpg", no_wrapper=True %} ``` ```text résultat.txt theme={null} //cdn2.hubspot.net/hub/53/file-733888614-jpg/assets/hubspot.com/about/management/dharmesh-home.jpg ``` | Paramètre | Type | Description | | - | - | - | | `src` | Chaîne | Permet d'indiquer l'URL par défaut de la source de l'image. | ## Sélecteur de langue Ajoute une icône de globe avec des liens vers les versions traduites d'une page de CMS donnée. Découvrez-en davantage sur le [contenu multilingue ici](https://knowledge.hubspot.com/fr/website-and-landing-pages/create-pages-in-multiple-languages). ```text entrée.txt theme={null} {% language_switcher "language_switcher" overrideable=false, display_mode="localized", label="Language Switcher" %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `display_mode` | Énumération | La langue du texte dans le sélecteur de langue. Les valeurs sont :
      • `Pagelang` signifie que le nom des langues s'affichera dans la langue de la page sur laquelle se trouve le sélecteur.
      • `Localized` signifie que le nom de chaque langue s'affichera dans cette langue.
      • `Hybrid` est un mélange des deux.
      | `Localized` | ## Image liée Crée une image sélectionnable par l'utilisateur qui est encadrée par un lien. Cette balise possède tous les paramètres d'un module image avec deux paramètres supplémentaires qui précisent l'URL de destination du lien et si le lien s'ouvre dans une nouvelle fenêtre. ```text entrée.txt theme={null} {% linked_image "linked_image" %} {% linked_image "executive_image" label="Executive photo", link="https://twitter.com/bhalligan", \ open_in_new_tab=True, alt="Photo of Brian Halligan", src="//cdn2.hubspot.net/hub/53/file-733888619-jpg/assets/hubspot.com/about/management/brian-home.jpg", width="300" %} ``` ```text résultat.txt theme={null} Photo of Brian Halligan ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `alt` | Chaîne | Permet de définir le texte alternatif par défaut pour l'image. | | | `src` | Chaîne | Permet d'ajouter l'attribut de source de la balise img. | | | `width` | Nombre | Permet de définir l'attribut de largeur de la balise img. | `The width of the image` | | `height` | Nombre | Permet de définir une hauteur minimale dans un attribut de style de la balise img pour les **modèles d'e-mail uniquement.** | `The height of the image` | | `hspace` | Nombre | Permet de définir l'attribut hspace de la balise img. | | | `align` | Chaîne | Permet de définir l'attribut d'alignement de la balise img. Les valeurs possibles sont left, right ou center. | | | `style` | Chaîne | Permet d'ajouter des déclarations CSS intraligne à la balise img. Par exemple : style="border:1px solid blue; margin:10px | | | `open_in_new_tab` | Booléen | Permet d'ouvrir ou non l'URL de destination dans un autre onglet. | `False` | | `link` | Chaîne | Permet de définir l'URL de destination du lien qui encadre la balise img. | | | `target` | Chaîne | Permet de définir l'attribut de cible de la balise de lien. | | | `loading` | Chaîne | Permet de contrôler l'attribut de chargement de l'élément img. [Utilisé pour le chargement en différé basé sur le navigateur.](/docs/cms/best-practices/testing-staging-performance/lazy-loading) | | ## Logo Une balise de logo restitue le logo de votre entreprise à partir des [paramètres du kit de marque du compte](https://knowledge.hubspot.com/fr/branding/edit-your-logo-favicon-and-brand-colors#edit-your-logo). ```text entrée.txt theme={null} {% logo "logo" %} {% logo "my_logo" width="200" %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `alt` | Chaîne | Permet de définir le texte alternatif par défaut pour l'image. | `Value in brand kit settings` | | `src` | Chaîne | Permet d'ajouter l'attribut de source de la balise img. | `Value in brand kit settings` | | `link` | Chaîne | Permet de définir l'URL de destination du lien qui encadre la balise img. | | | `width` | Nombre | Permet de définir l'attribut de largeur de la balise img. | `The width of the image` | | `height` | Nombre | Permet de définir une hauteur minimale dans un attribut de style de la balise img pour les **modèles d'e-mail uniquement.** | `The height of the image` | | `hspace` | Nombre | Permet de définir l'attribut hspace de la balise `img`. | | | `align` | Chaîne | Permet de définir l'attribut d'alignement de la balise `img`. Les valeurs possibles sont `left`, `right` et `center`. | | | `style` | Chaîne | Permet d'ajouter des déclarations CSS intraligne à la balise img. Par exemple :`style="border:1px solid blue; margin:10px"` | | | `suppress_company_name` | Booléen | Permet de masquer le nom de l'entreprise si un logo image n'est pas défini. | `False` | | `use_account_default` | Booléen | Si la valeur est définie sur `true` pour utiliser le nom de l'entreprise figurant dans les paramètres par défaut du compte. | `False` | | `open_in_new_tab` | Booléen | Permet d'ouvrir ou non l'URL de destination dans un autre onglet. | `False` | | `override_inherited_src` | Booléen | Si la valeur est définie sur `true`, utilisez la source du widget de logo plutôt que la source héritée des paramètres ou du modèle. | `True` | | `heading_level` | Chaîne | Lorsque vous utilisez des logos textuels non liés, le logo textuel est inséré dans l'une des options disponibles suivantes sous forme de balise HTML : `h1`, `h2`, `h3`, `h4`. | `h1` | | `loading` | Chaîne | Permet de contrôler l'attribut de chargement de l'élément img pour le [chargement asynchrone basé sur le navigateur.](/docs/cms/best-practices/testing-staging-performance/lazy-loading) | | ## Menu Génère un menu avancé basé sur une arborescence de menu dans **Paramètres du contenu > Menus avancés.** Consultez [Menus et navigation](/docs/cms/start-building/building-blocks/modules/menus-and-navigation) pour plus d'informations sur l'utilisation des menus dans les [modèles](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/overview) et les [modules](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/modules/overview). Si la valeur `id` est définie sur `null`, la balise menu restituera le menu par défaut du compte HubSpot. ```text entrée.txt theme={null} {% menu "menu" %} {% menu "my_menu" id=456, site_map_name="Default", overrideable=False, root_type="site_root", flyouts="true", max_levels="2", flow="horizontal", label="Advanced Menu" %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `id` | Nombre | L'ID de l'arborescence de menu à partir de Menus avancés dans Paramètres de contenu. | | | `site_map_name` | Chaîne | Le nom de l'arborescence de menu à partir de Menus avancés dans Paramètres de contenu. | `"default"` | | `root_type` | Énumération | Permet d'indiquer le type de menus avancés. Les options sont : « site\_root », « top\_parent », « parent », « page\_name », « page\_id », et « breadcrumb ». Ces valeurs correspondent à statique, dynamique par section, dynamique par page et fil d'Ariane. | `"site_root"` | | `flyouts` | Chaîne | Si la valeur est définie sur vrai, une classe est ajoutée à l'arborescence de menu qui peut être stylisée pour permettre aux éléments de menu enfants de s'afficher lorsque vous survolez le parent. Si la valeur est définie sur faux, les éléments de menu enfants s'affichent toujours. | `"true"` | | `max_levels` | Nombre | Permet de déterminer le nombre de niveaux de menus imbriqués à restituer dans le balisage. Ce paramètre définit le nombre d'enfants d'arborescence de menu qui peuvent être développés dans le menu. | `2` | | `flow` | Énumération | Permet de définir l'orientation des éléments de menu. Cela ajoute des classes à l'arborescence de menu, afin de pouvoir les styliser en conséquence. Les valeurs possibles sont : « horizontal », « vertical » ou « vertical\_flyouts ». Les menus horizontaux affichent les éléments côte à côte, et les menus verticaux vont de haut en bas. | `"horizontal"` | | `root_key` | Chaîne | Permet de trouver la racine du menu. Lorsque la valeur root\_type est définie sur page\_id ou page\_name, ce paramètre doit être l'ID de la page ou le libellé de la page, respectivement. | `"horizontal"` | | `label` | Chaîne | Du contenu enrichi pour décrire cette entité | `False` | | `label` | Chaîne | Du contenu enrichi pour décrire cette entité | `False` | ## Require\_css Une balise HubL qui met en file d'attente un élément de style à restituer dans l'élément ``. Cette balise est similaire à la [fonction require\_css](/docs/cms/reference/hubl/functions#require-css), sauf qu'elle insère un style intraligne plutôt qu'à partir d'une feuille de style. Cette balise ne se déduplique pas non plus par rapport à d'autres instances de la CSS sur la même page. Si vous créez un module et que vous souhaitez insérer une feuille de style, mais que vous pouvez utiliser ce module plusieurs fois sur une seule page, vous pouvez utiliser la fonction `require_css` à la place. ```text entrée.txt theme={null} {{ standard_header_includes }} {% require_css %} {% end_require_css %} {{ standard_footer_includes }} ``` ```text résultat.txt theme={null} ``` ## Require\_head Une balise HubL qui met en file d'attente tout ce qui est placé à l'intérieur dans `standard_header_includes` qui se trouve dans le `` du modèle. Pour la plupart des Javascript et CSS, consultez `require_js` et `require_css`. Parmi les cas d'utilisation de `require_head` figure la fourniture de méta-balises et de balises de liens spéciaux (comme prefetch et preconnect) à partir de modules. ```hubl theme={null} {% require_head %} {% end_require_head %} ``` ## Require\_js Une balise HubL qui met en file d'attente un élément de script à restituer. Pour mettre en file d'attente un script à restituer dans `` à partir d'un fichier différent via un élément ` {% end_require_js %} {{ standard_footer_includes }} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `position` | Chaîne | Permet de définir la position où le script intraligne sera restitué. Les options sont : `"head"` et `"footer"`. | `"footer"` | ## Texte enrichi Crée un éditeur de contenu WYSIWYG. ```text entrée.txt theme={null} {% rich_text "rich_text" %} {% rich_text "left_column" label="Enter HTML here" html="
      My rich text default content
      " %} Block Syntax Example: {% widget_block rich_text "right_column" overrideable=True, label="Right Column" %} {% widget_attribute "html" %}

      Something Powerful

      Tell The Reader More

      The headline and subheader tells us what you're offering, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.

      Remember:

      • Bullets are great
      • For spelling out benefits and
      • Turning visitors into leads.
      {% end_widget_attribute %} {% end_widget_block %} ``` ```text résultat.txt theme={null}

      Something Powerful

      Tell The Reader More

      The headline and subheader tells us what you're offering, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.

      Remember:

      • Bullets are great
      • For spelling out benefits and
      • Turning visitors into leads.
      ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `html` | Chaîne | Le contenu de texte enrichi par défaut pour le module. | `

      Something Powerful

      Tell The Reader More

      The headline and subheader tells us what you're offering, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.

      Remember:

      • Bullets are great
      • For spelling out [benefits](#) and
      • Turning visitors into leads.
      ` | ## Listing RSS Charge une liste de contenu à partir d'un flux RSS interne ou externe. > [!WARNING] > > ### Remarque : > > Ce module se charge de manière asynchrone côté client. Par conséquent, si vous souhaitez manipuler le flux après son chargement, vous devrez définir une fonction JS globale pour gérer cette manipulation. Utilisez la fonction `hsRssFeedComplete(feeds)`, où `feeds` est le sélecteur jQuery sur tous les flux qui ont été finalisés. Vous pouvez directement manipuler l'objet DOM dans cette fonction. ```text entrée.txt theme={null} {% rss_listing "rss_listing" %} {% rss_listing "my_rss_listing" rss_url="", publish_date_text="posted at", feed_source={rss_url="", is_external=False, content_group_id="30808594297"}, click_through_text="Read more", show_date=True, include_featured_image=True, overrideable=False, publish_date_format="short", show_detail=True, show_author=True, number_of_items="3", is_external=False, title="", content_group_id="24732847", label="RSS Listing", limit_to_chars="200", attribution_text="by" %} ``` ```text résultat.txt theme={null}

      How to Write Cron Jobs in HubSpot to take Time Based Action on CRM Data

      First things first: Cron jobs are scripts that get executed based on time. Understanding where this shorthand name comes from may help you remember this: Read more

      Using OpenAI Embeddings API to implement Semantic Search into a HubSpot Workflow

      This article was authored by a member of the HubSpot developer community, Roman Kozak. Read more

      How to Use NPM Packages in Custom Code Workflow Actions

      This article was authored by a member of the HubSpot developer community, Joshua Beatty. Read more

      ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `show_title` | Booléen | Permet d'afficher ou masquer le titre du flux RSS. | `True` | | `show_date` | Booléen | Permet d'afficher la date de publication. | `True` | | `show_author` | Booléen | Permet d'afficher le nom de l'auteur. | `True` | | `show_detail` | Booléen | Permet d'afficher le résumé du message jusqu'au nombre de caractères défini par le paramètre `limit_to_chars`. | `True` | | `title` | Chaîne | Permet d'ajouter un en-tête au-dessus du listing de flux RSS. | | | `limit_to_chars` | Nombre | Le nombre maximum de caractères à afficher dans le résumé. | `200` | | `publish_date_format` | Chaîne | Le format de la date de publication. Les valeurs possibles sont : `"short"`, `"medium"` et `"long"`. Accepte également les formats personnalisés tels que : `"MMMM d, yyyy 'at' h:mm a"`. | `"short"` | | `attribution_text` | Chaîne | Le texte qui attribue un auteur à un article. | `"by"` | | `click_through_text` | Chaîne | Le texte qui s'affiche pour le lien d'un clic publicitaire à la fin d'un résumé d'article. | `"Read more"` | | `publish_date_text` | Chaîne | Le texte qui indique quand un article a été publié. | `"posted at"` | | `include_featured_image` | Booléen | Permet d'afficher les images en vignette avec lien de l'article pour les flux RSS générés par HubSpot. | `False` | | `item_title_tag` | Chaîne | Permet d'indiquer la balise HTML de chaque titre d'article. | `span` | | `is_external` | Booléen | Le flux RSS provient d'un blog externe. | `False` | | `number_of_items` | Nombre | Le nombre maximal d'articles à afficher. | `5` | | `publish_date_language` | Chaîne | Permet d'indiquer la langue de la date de publication. | `en_US` | | `rss_url` | Chaîne | L'URL où se trouve le flux RSS. | | | `content_group_id` | Chaîne | L'ID du blog lorsque la source du flux est un blog interne. | | | `select_blog` | Chaîne |  : peut être utilisée pour sélectionner un fil d'actualité de blog HubSpot interne. | `default` | | `feed_source` | Chaîne | Permet de définir la source du flux RSS. Lorsqu'elle est interne, le format général est `{rss_url="", is_external=False, content_group_id="2502431580"}`. Lorsqu'elle est externe, le format général est `{rss_url="http://blog.hubspot.com/marketing/rss.xml", is_external=True}`. | | | `tag_id` | Nombre | L'ID pour la balise lorsque la source du flux est un blog interne. | | ## En-tête de section Génère un en-tête HTML et un sous-titre `

      `. ```text entrée.txt theme={null} {% section_header "section_header" %} {% section_header "my_section_header" subheader="A more subdued subheader", header="A clear and bold header", label="Section Header" %} ``` ```text résultat.txt theme={null}

      ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Chaîne | Le texte à afficher dans l'en-tête. | `"A clear and bold header"` | | `subheader` | Chaîne | Le texte à afficher dans le sous-titre. | `"A more subdued subheader"` | | `heading_level` | Chaîne | Le niveau d'en-tête HTM sémantique (h1 à h6 pris en charge). | `"h1"` | ## Menu simple Les menus simples vous permettent de créer des [menus de navigation](/docs/cms/start-building/building-blocks/modules/menus-and-navigation) de base qui peuvent être modifiés au niveau de la page. Contrairement aux modules de menu ordinaires, les menus simples ne sont pas gérés à partir de l'écran de navigation dans les paramètres du site web, mais à partir des éditeurs de modèle et de page. Vous pouvez utiliser la [syntaxe de bloc](/docs/cms/reference/modules/using-modules-in-templates#block-syntax) pour configurer une arborescence de menu par défaut. ```text entrée.txt theme={null} {% simple_menu "simple_menu" %} {% simple_menu "my_simple_menu" orientation="horizontal", label="Simple Menu" %} Block Syntax Example: {% widget_block simple_menu "block_simple_menu" overrideable=True, orientation="horizontal", label="Simple Menu" %} {% widget_attribute "menu_tree" is_json=True %}[{"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Home", "linkTarget": null, "linkUrl": "http://www.hubspot.com", "children": [], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "About", "linkTarget": null, "linkUrl": "http://www.hubspot.com/internet-marketing-company", "children": [{"contentType": null, "subCategory": null, "pageLinkName": null, "linkUrl": "http://www.hubspot.com/company/management", "isPublished": false, "children": [], "linkParams": null, "linkLabel": "Our Team", "linkTarget": null, "pageLinkId": null, "categoryId": null, "isDeleted": false}], "isDeleted": false}, {"contentType": null, "subCategory": null, "pageLinkName": null, "pageLinkId": null, "isPublished": false, "categoryId": null, "linkParams": null, "linkLabel": "Pricing", "linkTarget": null, "linkUrl": "http://www.hubspot.com/pricing", "children": [], "isDeleted": false}]{% end_widget_attribute %} {% end_widget_block %} ``` ```text résultat.txt theme={null}
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `orientation` | Énumération | Permet de définir les classes de balise de menu pour permettre de styliser l'orientation des éléments de menu sur la page. Les valeurs possibles sont : `"horizontal"` et `"vertical"`. | `"horizontal"` | | `menu_tree` | JSON | La structure du menu comprenant les noms des liens des pages et les URL cibles. | `[]` | ## Partage sur les réseaux sociaux Les balises de partage sur les réseaux sociaux génèrent des icônes de réseaux sociaux qui peuvent être utilisées pour partager une page particulière. Ce module peut être utilisé avec la [syntaxe de bloc](/docs/cms/reference/modules/using-modules-in-templates#block-syntax) pour personnaliser les images des icônes et plus encore. ```text entrée.txt theme={null} {% social_sharing "social_sharing" %} {% social_sharing "my_social_sharing" use_page_url=True %} Block Syntax Example: {% widget_block social_sharing "my_social_sharing" label="Social Sharing", use_page_url=True, overrideable=True %} {% widget_attribute "pinterest" is_json=True %}{"custom_link_format": "", "pinterest_media": "http://cdn1.hubspot.com/hub/158015/305390_10100548508246879_837195_59275782_6882128_n.jpg", "enabled": true, "network": "pinterest", "img_src": "https://static.hubspot.com/final/img/common/icons/social/pinterest-24x24.png"}{% end_widget_attribute %} {% widget_attribute "twitter" is_json=True %}{"custom_link_format": "", "enabled": true, "network": "twitter", "img_src": "https://static.hubspot.com/final/img/common/icons/social/twitter-24x24.png"}{% end_widget_attribute %} {% widget_attribute "linkedin" is_json=True %}{"custom_link_format": "", "enabled": true, "network": "linkedin", "img_src": "https://static.hubspot.com/final/img/common/icons/social/linkedin-24x24.png"}{% end_widget_attribute %} {% widget_attribute "facebook" is_json=True %}{"custom_link_format": "", "enabled": true, "network": "facebook", "img_src": "https://static.hubspot.com/final/img/common/icons/social/facebook-24x24.png"}{% end_widget_attribute %} {% widget_attribute "email" is_json=True %}{"custom_link_format": "", "enabled": true, "network": "email", "img_src": "https://static.hubspot.com/final/img/common/icons/social/email-24x24.png"}{% end_widget_attribute %} {% end_widget_block %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `use_page_url` | Booléen | Si la valeur est définie sur vrai, le module partage l'URL de la page par défaut. | `True` | | `link` | Chaîne | Permet d'indiquer une URL différente à partager, si la valeur `use_page_url` définie sur faux. | | | `pinterest` | JSON | Les paramètres pour le format du lien Pinterest et la source de l'image de l'icône. | `See block syntax example, above` | | `twitter` | JSON | Les paramètres pour le format du lien Twitter et la source de l'image de l'icône. | `See block syntax example, above` | | `linked_in` | JSON | Les paramètres pour le format du lien LinkedIn et la source de l'image de l'icône. | `See block syntax example, above` | | `facebook` | JSON | Les paramètres pour le format du lien Facebook et la source de l'image de l'icône. | `See block syntax example, above` | | `email` | JSON | Les paramètres pour le format du lien de partage par e-mail et la source de l'image de l'icône. | `See block syntax example, above` | ## Espacement Une balise spacer génère une balise span vide. Cette balise peut être stylisée pour servir d'espacement. Dans les mises en page par glisser-déposer, le module d'espacement est encadré dans un conteneur dont la classe est span1-span12 afin de déterminer l'espace que le module doit occuper dans la grille adaptative à douze colonnes. ```text entrée.txt theme={null} {% space "space" %} {% space "spacer" label="Horizontal Spacer" %} ``` ```text résultat.txt theme={null} ``` ## Balises de page système Les balises suivantes peuvent être utilisées sur les [pages système](https://developers.hubspot.fr/docs/cms/start-building/building-blocks/templates/overview#system-pages), telles que les pages de réinitialisation du mot de passe ou d'abonnement aux e-mails. ### Désabonnement à la sauvegarde des e-mails La page de désabonnement alternative s'affiche lorsque HubSpot ne parvient pas à identifier l'adresse e-mail du destinataire d'un e-mail qui cherche à se désabonner. Cette balise restitue un formulaire permettant au contact de saisir son adresse e-mail pour se désabonner des communications par e-mail. Elle doit être utilisée sur un [modèle système de désabonnement alternatif](https://knowledge.hubspot.com/fr/design-manager/use-system-templates-to-customize-error-subscription-and-password-prompt-pages). ```text entrée.txt theme={null} {% email_simple_subscription "email_simple_subscription" %} {% email_simple_subscription "email_simple_subscription" header="Email Unsubscribe", input_help_text="Your email address:", input_placeholder="email@example.com", button_text="Unsubscribe", label="Backup Unsubscribe" %} ``` ```text résultat.txt theme={null}

        Your email address:

        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Chaîne | Permet de restituer le texte dans une balise h1 au-dessus du formulaire de désabonnement. | `"Email Unsubscribe"` | | `input_help_text` | Chaîne | Permet de restituer le texte d'aide dans une balise h3 au-dessus du champ de votre formulaire de désabonnement aux e-mails. | `"Your email address:"` | | `input_placeholder` | Chaîne | Permet d'ajouter un texte d'espace réservé dans le champ de formulaire d'adresse e-mail. | `"email@example.com"` | | `button_text` | Chaîne | Permet de modifier le texte du bouton d'envoi du formulaire de désabonnement. | `"Unsubscribe"` | ### Abonnements aux e-mails Ce module s'affiche lorsqu'un destinataire d'un e-mail cherche à modifier ses préférences d'abonnement. Il doit être utilisé sur un [modèle système de préférences d'abonnement.](https://knowledge.hubspot.com/fr/design-manager/use-system-templates-to-customize-error-subscription-and-password-prompt-pages) ```text entrée.txt theme={null} {% email_subscriptions "email_subscriptions" %} {% email_subscriptions "email_subscriptions" resubscribe_button_text="Yes, resubscribe me!", unsubscribe_single_text="Uncheck the types of emails you do not want to receive:", subheader_text="\n If this is not your email address, please ignore this page since the email associated with this page was most likely forwarded to you.\n", unsubscribe_all_unsubbed_text="You are presently unsubscribed from all of our emails. Would you like to receive our emails again?", button_text="Update email preferences", label="Subscription Preferences", header="Communication Preferences", unsubscribe_all_option="Unsubscribe me from all mailing lists.", unsubscribe_all_text="Or check here to never receive any emails:" %} ``` ```text résultat.txt theme={null}
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Chaîne | Permet de restituer le texte dans une balise h1 au-dessus du formulaire de préférences d'abonnement. | `"Communication Preferences"` | | `subheader_text` | Chaîne | Permet d'ajouter du texte sous l'en-tête au-dessus des préférences de désabonnement. | `"

        If this is not your email address, please ignore this page since the email associated with this page was most likely forwarded to you.

        "` | | `unsubscribe_single_text` | Chaîne | Permet de restituer le texte dans un élément `

        ` au-dessus des options d'abonnement. | `"Uncheck the types of emails you do not want to receive:"` | | `unsubscribe_all_text` | Chaîne | Permet de restituer le texte dans un élément `

        ` au-dessus de la case à cocher de désabonnement de tous les e-mails. | `"Or check here to never receive any emails:"` | | `unsubscribe_all_unsubbed_text` | Chaîne | Permet d'ajouter du texte dans un élément `

        ` restitué si un contact est actuellement désabonné de tous les e-mails. | `"You are presently unsubscribed from all of our emails. Would you like to receive our emails again?"` | | `unsubscribe_all_option` | Chaîne | Permet de définir le texte situé à côté de la case à cocher Se désabonner de tous les e-mails. | `"Unsubscribe me from all mailing lists."` | | `button_text` | Chaîne | Permet de définir le texte du bouton d'envoi qui met à jour les préférences d'abonnement. | `"Update email preferences"` | | `resubscribe_button_text` | Chaîne | Permet de définir le texte du bouton d'envoi pour les contacts qui se réabonnent. | `"Yes, resubscribe me!"` | ### Confirmation des abonnements aux e-mails La confirmation des abonnements aux e-mails est un module qui peut être ajouté au modèle de remerciement lorsqu'un destinataire met à jour ses préférences d'abonnement ou se désabonne. Il doit être utilisé sur un [modèle système de préférences d'abonnement.](https://knowledge.hubspot.com/fr/design-manager/use-system-templates-to-customize-error-subscription-and-password-prompt-pages) ```text entrée.txt theme={null} {% email_subscriptions_confirmation "email_subscriptions_confirmation" %} {% email_subscriptions_confirmation "email_subscriptions_confirmation" label="Subscriptions Update Confirmation", unsubscribe_all_success="You have successfully unsubscribed from all email communications.", subscription_update_success="You have successfully updated your email preferences.", subheader_text="\n If this is not your email address, please ignore this page since the email associated with this page was most likely forwarded to you.\n" %} ``` ```text résultat.txt theme={null}

        You have successfully updated your email preferences.
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Chaîne | Permet de restituer le texte dans une balise h1 au-dessus du formulaire de désabonnement. | `"Communication Preferences"` | | `subheader_text` | Chaîne | Permet d'ajouter du texte au-dessus du message de confirmation. | `"

        If this is not your email address, please ignore this page since the email associated with this page was most likely forwarded to you.

        "` | | `unsubscribe_all_success` | Chaîne | Permet de définir le texte qui s'affiche lorsqu'une personne se désinscrit de toutes les communications par e-mail. | `"You have successfully unsubscribed from all email communications."` | | `subscription_update_success` | Chaîne | Permet de définir le texte lorsqu'un destinataire met à jour ses préférences d'abonnement. | `"You have successfully updated your email preferences."` | ### Connexion des membres Crée un formulaire de connexion pour donner accès à un [contenu privé](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content). ```text entrée.txt theme={null} {% member_login "my_login" %} {% member_login "my_login" email_label="Email", password_label="Password", remember_me_label="Remember Me", reset_password_text="Forgot your password?", submit_button_text="Login", show_password="Show password" %} ``` ```text résultat.txt theme={null} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `email_label` | Chaîne | Le libellé du champ de saisie de l'e-mail. | `"Email"` | | `password_label` | Chaîne | Le libellé du champ de saisie du mot de passe. | `"Password"` | | `remember_me_label` | Chaîne | Le libellé de la case à cocher « Se souvenir de moi ». | `"Remember Me"` | | `reset_password_text` | Chaîne | Le texte de l'hyperlien de réinitialisation du mot de passe. | `"Forgot your password?"` | | `submit_button_text` | Chaîne | Le texte du bouton de soumission. | `"Login"` | | `show_password` | Chaîne | Le texte du lien de révélation du mot de passe. | `"Show password"` | ### Inscription des membres Crée un formulaire permettant de s'inscrire pour accéder à un [contenu privé](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content). ```text entrée.txt theme={null} {% member_register "my_register" %} {% member_register "my_register" email_label="Email", password_label="Password", password_confirm_label="Confirm Password", submit_button_text="Save Password", show_password="Show password" %} ``` ```text résultat.txt theme={null}
        Show password
        Show password
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `email_label` | Chaîne | Le libellé du champ de saisie de l'e-mail. | `"Email"` | | `password_label` | Chaîne | Le libellé du champ de saisie du mot de passe. | `"Password"` | | `password_confirm_label` | Chaîne | Le libellé du champ de confirmation du mot de passe. | `"Confirm Password"` | | `submit_button_text` | Chaîne | Le texte du bouton de soumission. | `"Save Password"` | | `show_password` | Chaîne | Le texte du lien de révélation du mot de passe. | `"Show password"` | ### Demande de réinitialisation du mot de passe Crée un formulaire pour envoyer un e-mail de réinitialisation de mot de passe pour l'accès aux pages protégées par un mot de passe. ```text entrée.txt theme={null} {% password_reset_request "my_password_reset_request" %} {% password_reset_request "my_password_reset_request" email_label="Email", submit_button_text="Send Reset Email" %} ``` ```text résultat.txt theme={null}
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `email_label` | Chaîne | Le libellé du champ de saisie de l'e-mail. | `"Email"` | | `submit_button_text` | Chaîne | Le texte du bouton de soumission. | `"Send Reset Email"` | | `password_reset_message` | Chaîne | Le message qui s'affiche après avoir demandé l'e-mail de réinitialisation du mot de passe. | `False` | ### Réinitialisation de mot de passe Affiche un formulaire de réinitialisation de mot de passe pour accéder aux pages protégées par mot de passe. ```text entrée.txt theme={null} {% password_reset "my_password_reset" password_label="Password", password_confirm_label="Confirm Password", submit_button_text="Save password", show_password="Show password" %} ``` ```text résultat.txt theme={null}
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `password_label` | Chaîne | Le libellé de texte pour le champ de saisie du mot de passe. | `"Email"` | | `password_confirm_label` | Chaîne | Le libellé de texte pour le champ de saisie de confirmation du mot de passe. | `"Send Reset Email"` | | `submit_button_text` | Chaîne | Le libellé de texte pour le bouton de soumission de formulaire. | `False` | | `show_password` | Chaîne | Le libellé de texte pour le bouton d'affichage de la valeur du mot de passe saisie. | `False` | | `password_requirements` | Chaîne | Le libellé de texte qui décrit les exigences en matière de mot de passe. | `False` | ### Invite de mot de passe Ajoute une invite de mot de passe pour les pages protégées par un mot de passe. ```text entrée.txt theme={null} {% password_prompt "password_prompt" %} {% password_prompt "my_password_prompt" submit_button_text="Submit", bad_password_message="Sorry, please try again.\n", label="Password Prompt" %} ``` ```text résultat.txt theme={null}
        ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `submit_button_text` | Chaîne | Le libellé du bouton situé sous le champ de saisie du mot de passe. | `"Submit"` | | `bad_password_message` | Chaîne | Le message affiché si un mot de passe incorrect a été saisi. | `"

        Sorry, please try again.

        "` | | `password_placeholder` | Chaîne | Permet de définir le texte d'espace réservé dans le champ du mot de passe. | `"Password"` | ## Texte Crée une seule ligne de texte. Cette balise peut être utile pour être intégrée à votre balisage, lorsqu'elle est utilisée conjointement avec le paramètre `no_wrapper=True`. Par exemple, si vous souhaitez que vos utilisateurs finaux puissent définir la destination d'une ancre prédéfinie, vous pouvez renseigner l'élément `href` avec un module de texte ayant la forme `no_wrapper=True`. ```text entrée.txt theme={null} {% text "text" %} {% text "simple_text_field" label="Enter text here", value="This is the default value for this text field" %} ``` ```text résultat.txt theme={null} This is the default value for this text field ``` | Paramètre | Type | Description | | - | - | - | | `value` | Chaîne | Permet de définir le texte par défaut du champ de texte à ligne unique. | ## Zone de texte Une zone de texte est similaire à un module de texte dans la mesure où elle permet aux utilisateurs de saisir du texte brut, mais elle leur offre une plus grande zone dans l'éditeur de contenu. Ce module ne prend pas en charge le HTML. Si vous souhaitez l'utiliser directement à l'intérieur d'une balise d'encadrement prédéfinie, ajoutez le paramètre `no_wrapper=true`. ```text entrée.txt theme={null} {% textarea "my_textarea" %} {% textarea "my_textarea" label="Enter plain text block", value="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean a urna quis lacus vehicula rutrum.", no_wrapper=True %} ``` ```text résultat.txt theme={null} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean a urna quis lacus vehicula rutrum. ``` | Paramètre | Type | Description | | - | - | - | | `value` | Chaîne | Permet de définir le texte par défaut de la zone de texte. | ## Lecteur vidéo Restituez un lecteur vidéo pour un fichier vidéo à partir du gestionnaire de fichiers dont le paramètre *Autoriser l'intégration, le partage et le suivi* est activé. **Entrée** ```hubl theme={null} {% video_player "embed_player" %} {% video_player "embed_player" overrideable=False, type="scriptV4", hide_playlist=True, viral_sharing=False, embed_button=False, width="600", height="375", player_id="6178121750", style="", conversion_asset="{"type":"FORM","id":"9a77c63f-bee6-4ff8-9202-b0af020ea4b2","position":"POST"}" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `hide_playlist` | Booléen | Permet de masquer la playlist vidéo. | `True` | | `playlist_color` | Chaîne | Une valeur de couleur hex pour la playlist. | | | `play_button_color` | Chaîne | Une valeur de couleur hex pour les boutons de lecture et de pause. | `#2A2A2A` | | `embed_button` | Booléen | Permet d'afficher le bouton d'intégration sur le lecteur. | `False` | | `viral_sharing` | Booléen | Permet d'afficher le bouton de partage sur les réseaux sociaux sur le lecteur. | `False` | | `width` | Nombre | La largeur du lecteur vidéo intégré. | `Auto` | | `height` | Nombre | La hauteur du lecteur vidéo intégré. | `Auto` | | `player_id` | Nombre | L'élément `player_id` de la vidéo à intégrer. | | | `style` | Chaîne | Un style supplémentaire pour le lecteur. | | | `conversion_asset` | JSON | La définition d'un événement pour le lecteur. Peut restituer le CTA ou le formulaire avant ou après la lecture de la vidéo. Ce paramètre prend un objet JSON avec trois paramètres : type (FORM ou CTA), ID (le guide de l'objet type), position (POST ou PRE). | `See above example` | | `placeholder_alt_text` | Chaîne | Le texte alternatif de la vidéo. | | # Variables HubL Source: https://developers.hubspot.fr/docs/cms/reference/hubl/variables Les modèles HubSpot peuvent utiliser une multitude de variables prédéfinies qui peuvent être utilisées pour restituer des éléments utiles du site web et des e-mails. Cette page est une liste de référence de ces variables. Les modèles HubSpot peuvent utiliser une multitude de variables prédéfinies qui peuvent être utilisées pour restituer des éléments utiles du site web et des e-mails. Cette page est une liste de référence de ces variables. [Découvrez-en davantage sur la création de vos propres variables](/docs/cms/reference/hubl/variables-macros-syntax) dans un [modèle HubL](/docs/cms/start-building/building-blocks/templates/html-hubl-templates) ou un [module](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview). La plupart des variables énumérées sur cette page sont facultatives, mais certaines sont obligatoires afin de créer des e-mails et des pages à partir de vos modèles. > [!WARNING] > > Les variables énumérées ci-dessous peuvent être utilisées individuellement en les entourant du délimiteur `}}` comme indiqué sur la page [Variables et macros](/docs/cms/reference/hubl/variables-macros-syntax). Vous pouvez éventuellement utiliser ces variables avec d'autres éléments du modèle de langue HubL, tels que les [boucles](/docs/cms/reference/hubl/loops), les [filtres](/docs/cms/reference/hubl/filters), les [fonctions](/docs/cms/reference/hubl/functions) ou encore les [balises](/docs/cms/reference/hubl/tags/standard-tags). ## Variables disponibles dans tous les modèles Les variables HubL ci-dessous peuvent être utilisées dans les modèles d'e-mails, de pages ou de blogs. Pour afficher des informations supplémentaires sur ces résultats de variables, vous pouvez utiliser le [filtre pprint](/docs/cms/reference/hubl/filters#pprint), comme indiqué ci-dessous. ```text entrée.txt theme={null} {% set variable = content %} {{variable|pprint}} ``` ```text résultat.txt theme={null} (ContentMeta: { "canonicalUrl" : "https://www.website.com/url-slug", "deferDynamicValues" : false, "featuredImageAltText" : "", "featuredImageHeight" : 0, "featuredImageUrl" : "", "featuredImageWidth" : 0, "htmlTitle" : "", "linkRelCanonicalUrl" : "https://www.website.com/url-slug", "metaDescription" : "", "metaKeywords" : "", "name" : "", "unescapedHtmlTitle" : "", "unescapedMetaDescription" : null }) ``` \| Variable | Type | Description | \| --- | --- | --- | --- | \| `account` | Dict | Un dictionnaire qui stocke [les valeurs des propriétés de l'entreprise](/docs/api-reference/crm-properties-v3/guide) d'un contact connu [de l'entreprise primaire associée](https://knowledge.hubspot.com/fr/records/associate-records#understand-the-primary-company-association). Vous pouvez accéder à des propriétés d'entreprise spécifiques (personnalisées et par défaut) via cette variable en ajoutant un point suivi du nom de la propriété interne. Par exemple, `account.name` imprimera le nom de l'entreprise principale associée au contact. \ \ L'utilisation de cette variable désactivera la mise en cache des pages. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | \| `company_domain` | Chaîne | Permet d'imprimer le domaine de l'entreprise défini sur **Site web** > **Pages** > **Branding** > **Lien du logo**. | \| `contact` | Dict | Un dictionnaire qui stocke les valeurs des propriétés du contact [](/docs/api-reference/crm-properties-v3/guide) pour un contact connu. Vous pouvez accéder à des propriétés de contact spécifiques (personnalisées et par défaut) via cette variable en ajoutant un point suivi du nom de la propriété interne. Par exemple, `contact.firstname` imprimera le prénom du contact. \ \ L'utilisation de cette variable désactivera la mise en cache des pages. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | \| `content` | Dict | Un dictionnaire qui stocke diverses propriétés relatives à un élément de contenu spécifique tel qu'un e-mail, une page ou un article. | \| `content.absolute_url` | Chaîne | Permet d'imprimer l'URL complète d'une page, d'un article ou de la version web d'un e-mail. | \| `content.archived` | Booléen | Défini sur `true` si la page ou l'e-mail a été marqué comme archivé par l'utilisateur. | \| `content.author_email` | Chaîne | L'adresse e-mail du créateur du contenu. | \| `content.author_name` | Chaîne | Le prénom et le nom de famille du créateur du contenu. | \| `content.author_username` | Chaîne | Le nom d'utilisateur HubSpot du créateur du contenu. | \| `content.campaign` | Chaîne | Le GUID de la campagne marketing à laquelle cette page ou cet e-mail est associé. Cet ID unique se trouve dans l'URL d'une campagne particulière dans l'outil de la campagne. | \| `content.campaign_name` | Chaîne | Le nom de la campagne marketing à laquelle cette page, cet article ou cet e-mail est associé. | \| `content.created` | Date et heure | Un objet datetime indiquant la date de création initiale du contenu (UTC). Cette variable peut être formatée avec le [filtre datetime](/docs/cms/reference/hubl/filters#datetimeformat). | \| `content.meta_description` | Chaîne | Pour extraire la méta-description d'une page, il est préférable d'utiliser la variable `page_meta.meta_description` | . | \| `content.name` | Chaîne | Le nom d'un article, d'un e-mail ou d'une page. Pour les pages et les e-mails, le nom du contenu interne sera imprimé, tandis que pour les articles, le titre de l'article sera imprimé. Pour les articles de blog, il s'agit du titre de l'article qui s'affiche. Pour les autres types de contenu, il s'agit généralement d'un nom interne. Cette variable comprend un encadrement qui permet de la modifier via l'interface utilisateur lorsqu'elle est incluse dans des articles de blog. Si vous voulez imprimer le nom du contenu sans encadrement, utilisez `page_meta.name`. | \| `content.publish_date` | Date et heure | Un objet datetime indiquant la date de publication du contenu (UTC). Cette variable peut être formatée avec le filtre [format\_datetime](/docs/cms/reference/hubl/filters#format-datetime). | \| `content.publish_date_localized` | Chaîne | Une chaîne représentant la date et heure à laquelle le contenu a été publié en utilisant le fuseau horaire défini dans les [paramètres par défaut du compte](https://knowledge.hubspot.com/fr/account-management/change-your-language-and-region-settings). Cette variable est également soumise aux [paramètres de langue et de format de date](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#set-your-blog-s-date-formats). | \| `content.template_path` | Chaîne | Le chemin d'accès du fichier du gestionnaire de conception vers votre modèle (par exemple : `custom/page/web_page_basic/my_template.html`). | \| `content.slug` | Chaîne | Le slug d'URL d'une page, d'un article ou de la page de la version web d'un e-mail Il s'agit de la valeur qui suit le domaine. Par exemple, dans `https://example.com/about-us`, le slug est `about-us`. Pour l'URL complète, utilisez `content.absolute_url` à la place. | \| `content.updated` | Date et heure | Un objet datetime pour la dernière mise à jour du contenu par l'utilisateur (UTC). Cette variable peut être formatée avec le filtre dateTime. N'équivaut pas à `content.publish_date` lors de la première publication. Utilisez le filtre [`|between_times`](/docs/cms/reference/hubl/filters#between-times) pour vérifier si un article a été mis à jour après sa publication. | \| `content_id` | Chaîne | Permet d'imprimer l'ID unique d'une page, d'un article ou d'un e-mail. Cet ID peut être trouvé dans l'URL de l'éditeur. Vous pouvez utiliser cette variable comme un alias pour `content.id`. | \| `favicon_link` | Chaîne | Permet d'imprimer l'URL source de la favicon. Découvrez-en davantage sur la [configuration de favicons dans HubSpot](https://knowledge.hubspot.com/fr/branding/edit-your-logo-favicon-and-brand-colors#add-or-edit-your-favicon). | \| `hub_id` | Chaîne | L'ID du portail de votre compte HubSpot. | \| `hubspot_analytics_tracking_code` | Chaîne | Permet d'inclure le code de suivi analytique. Cette balise n'est pas nécessaire, car `standard_footer_includes` restitue déjà le code de suivi. | \| `local_dt` | Date et heure | Un objet datetime de l'heure actuelle dans le fuseau horaire défini dans les paramètres de rapport. L'utilisation de cette variable désactivera la mise en cache des pages afin de renvoyer l'heure actuelle. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | \| `local_time_zone` | Chaîne | Le fuseau horaire, tel que configuré dans vos paramètres de rapport HubSpot. | \| `page_meta.canonical_url` | Chaîne | L'URL officielle à laquelle cette page doit être consultée. Ne comprend généralement pas de paramètres de chaîne de requête. Utilisez ceci pour la balise `rel="canonical"`. HubSpot rend automatiquement les URL canoniques. | \| `page_meta.html_title` | Chaîne | Le titre de la page. Cette variable doit être utilisée dans la balise `` des modèles HTML. | \| `page_meta.meta_description` | Chaîne | La méta-description d'une page. Cette variable doit être utilisée dans la balise `<meta>` des modèles HTML. | \| `page_meta.name` | Chaîne | Un alias pour `content.name`. | \| `portal_id` | Chaîne | Un alias pour la variable `hub_id`. | \| `request_contact` | Dict | Un dictionnaire contenant des données sur le contact demandé. Non disponible pour les modèles d'e-mails. L'utilisation de cette variable désactivera la mise en cache des pages. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | \| `site_settings` | Dict | Un dictionnaire contenant divers paramètres de page, de blog et d'e-mail, y compris les [couleurs, les polices](#color-and-font-settings) et les [détails du pied de page des e-mails](#email-variables). | \| `year` | Chaîne | Permet d'imprimer l'année en cours. | ## Variables d'e-mail Voici les variables HubL utilisables dans les modèles d'e-mails. Certaines variables, telles que les [variables des paramètres de couleur et de police](#color-and-font-settings), peuvent être utilisées dans d'autres types de contenu si vous souhaitez faire référence à vos paramètres de couleur et de police d'e-mail ailleurs. ### Variables de modèle d'e-mail obligatoires Conformément aux [directives européennes sur la protection de la vie privée](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers), tous les e-mails envoyés par HubSpot doivent contenir certaines informations sur l'entreprise et les désabonnements. Ces informations sont définies par les variables suivantes, qui doivent être incluses. Les valeurs de ces jetons sont extraites des [paramètres d'e-mail marketing](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers#edit-your-default-email-footer-information-in-your-settings) du compte. D'autres variables d'e-mail sont facultatives et sont énumérées [plus bas sur cette page](#email-content). | Variable | Type | Description | | - | - | - | | `site_settings.company_city` | Chaîne | Imprime la ville de l'entreprise. | | `site_settings.company_name` | Chaîne | Imprime le nom de l'entreprise. | | `site_settings.company_state` | Chaîne | Imprime l'état de l'entreprise. | | `site_settings.company_street_address_1` | Chaîne | Imprime l'adresse de l'entreprise. | | `unsubscribe_link` | Chaîne | Permet d'imprimer l'URL de la page qui permet aux destinataires de gérer leurs préférences d'abonnement ou de se désabonner des communications par e-mail. Cette variable doit être utilisée dans l'attribut `href` d'une balise d'ancrage `<a>`. | ### Paramètres de couleur et de police Il existe plusieurs contrôles de base de couleur et de police dans vos [paramètres d'e-mail marketing](https://knowledge.hubspot.com/fr/marketing-email/manage-your-marketing-email-account-settings) qui peuvent être imprimés pour les e-mails. Si indiquée, vous pouvez utiliser certaines de ces variables sur les modèles de page et de blog en ajoutant `site_settings.` avant la variable. | Variable | Type | Description | | - | - | - | | `background_color` | Chaîne | Paramètre de couleur d'arrière-plan en tant que valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.background_color`. | | `body_border_color` | Chaîne | Le paramètre de couleur de bordure du corps de l'e-mail sous forme de valeur hex. Cette option est disponible lorsque vous sélectionnez **Définir manuellement la couleur du corps de l'e-mail** dans le menu déroulant *Options de couleur de bordure* dans les paramètres. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.body_border_color`. | | `body_border_color_choice` | Chaîne | La valeur de cette variable est contrôlée par le menu déroulant *Options de couleur de bordure* dans les paramètres. Les valeurs sont : `BORDER_AUTOMATIC`, `BORDER_MANUAL`, `BORDER_NONE`. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.body_border_color_choice`. | | `body_color` | Chaîne | Le paramètre de couleur du corps de l'e-mail sous forme de valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.body_color`. | | `primary_accent_color` | Chaîne | Paramètre de couleur de thème principal en tant que valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.primary_accent_color`. | | `primary_font` | Énumération | Paramètre de police principale sous forme de chaîne. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.primary_font`. | | `primary_font_color` | Chaîne | Paramètre de couleur de police principale en tant que valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.primary_font_color`. | | `primary_font_size` | Chaîne | Paramètre de taille de police principal en tant que valeur `px`. Pour les modèles de blog, utilisez `site_settings.primary_font_size`. | | `primary_font_size_num` | Nombre | Le numéro de la taille de la police principale, à l'exception de `px`. | | `secondary_accent_color` | Chaîne | Paramètre de couleur de thème secondaire en tant que valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.secondary_accent_color`. | | `secondary_font` | Énumération | Paramètre de police secondaire sous forme de chaîne. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.secondary_font`. | | `secondary_font_color` | Chaîne | Paramètre de couleur de police secondaire en tant que valeur hex. Pour imprimer cette valeur dans des modèles de page ou de blog, utilisez `site_settings.secondary_font_color`. | | `secondary_font_size_num` | Chaîne | Le numéro de la taille de la police secondaire, à l'exception de `px`. | ### Contenu de l'e-mail | Variable | Type | Description | | - | - | - | | `content.create_page` | Booléen | La valeur est définie sur `True` s'il existe une version web de l'e-mail. | | `content.email_body` | Texte enrichi | Le corps principal de l'e-mail. Cette variable restitue un module de texte enrichi. | | `content.emailbody_plaintext` | Chaîne | Le remplacement facultatif du corps de l'e-mail en texte brut. | | `content.from_name` | Chaîne | Le nom de l'expéditeur de l'e-mail. | | `content.reply_to` | Chaîne | L'adresse de réponse de l'e-mail. | | `content.subject` | Chaîne | L'objet de l'e-mail. | | `email_body_padding` | Chaîne | Le [paramètre de remplissage du corps de l'e-mail](https://knowledge.hubspot.com/fr/marketing-email/manage-your-marketing-email-account-settings#size). | | `email_body_width` | Chaîne | Le [paramètre de largeur du corps de l'e-mail](https://knowledge.hubspot.com/fr/marketing-email/manage-your-marketing-email-account-settings#size). | | `site_settings.company_street_address_2` | Chaîne | Permet d'imprimer la ligne d'adresse 2 à partir des [paramètres de pied de page CAN-SPAM](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers) du compte. | | `site_settings.office_location_name` | Chaîne | Permet d'imprimer le nom de l'adresse des bureaux à partir des [paramètres de pied de page CAN-SPAM](https://knowledge.hubspot.com/fr/marketing-email/edit-office-location-information-in-email-footers) du compte. | | `subscription_confirmation_url` | Chaîne | Permet d'imprimer l'URL de la page de confirmation de gestion des inscriptions. Cette URL est générée dynamiquement à l'envoi. | | `subscription_name` | Chaîne | Permet d'imprimer le nom du type d'e-mail indiqué pour cet e-mail. | | `unsubscribe_anchor` | Chaîne | Permet de générer une balise d'ancrage avec le mot « unsubscribe » lié à votre page de désabonnement. | | `unsubscribe_link_all` | Chaîne | Permet de restituer un lien permettant de se désabonner de toutes les communications par e-mail, par opposition à un lien vers une page de gestion des inscriptions. | | `unsubscribe_section` | Chaîne | Permet de restituer une section de désabonnement qui comprend un lien de désabonnement, ainsi qu'un texte d'aide. | | `view_as_page_section` | Chaîne | Permet de générer un lien avec un texte d'aide qui mène à la version web d'un e-mail. | | `view_as_page_url` | Chaîne | Permet de générer un lien qui mène à la version web d'un e-mail. | ### Variables d'e-mail de contenu privé La liste suivante de variables n'est disponible que dans les modèles d'e-mails utilisés pour les [modèles d'e-mails à contenu privé](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content#customize-your-membership-registration-page-and-email-templates). | Variable | Type | Description | | - | - | - | | `membership_company_name` | Chaîne | Le nom de l'entreprise, tel que défini dans les [paramètres du contenu privé](https://knowledge.hubspot.com/fr/website-pages/manage-private-content-settings#edit-general-settings-for-private-content) du compte. | | `membership_domain` | Chaîne | Le domaine du site web à contenu privé. | | `membership_logo_src` | Chaîne | L'URL du logo à afficher, telle que définie dans les [paramètres du kit de marque](https://knowledge.hubspot.com/fr/branding/edit-your-logo-favicon-and-brand-colors) du compte. | | `membership_logo_alt` | Chaîne | L'attribut du `alt` logo, tel que défini dans les [paramètres du kit de marque](https://knowledge.hubspot.com/fr/branding/edit-your-logo-favicon-and-brand-colors) du compte. | | `membership_registration_link` | URL | Le lien vers la page d'inscription pour le site web à contenu privé. | | `membership_password_saved_link` | URL | Le lien vers la page de sauvegarde du mot de passe. Le lien redirigera le visiteur vers une page restreinte aléatoire à laquelle il a accès. | | `membership_password_reset_link` | URL | Le lien vers la page de réinitialisation de mot de passe pour le site web à contenu privé. | | `membership_passwordless_auth_link` | URL | Le lien vers la page de connexion des membres sans mot de passe. | | `membership_verify_registration_link` | URL | Le lien de la page de vérification de l'enregistrement. | | `membership_website_admin` | Chaîne | Le nom de l'administrateur du site web, tel que défini dans les [paramètres du contenu privé](https://knowledge.hubspot.com/fr/website-pages/manage-private-content-settings#edit-general-settings-for-private-content) du compte. | ## Variables de page de site web Les variables suivantes sont disponibles pour les pages de site, les pages de destination, les pages système et les blogs. ### Variables de modèle de page obligatoires Pour publier un fichier codé en tant que modèle de page ou de blog modifiable, les variables suivantes doivent être incluses. Pour publier un fichier HTML sans ces variables, afin de l'utiliser dans un autre modèle, incluez `isAvailableForNewContent: false` dans les [annotations du modèle](/docs/cms/start-building/building-blocks/templates/html-hubl-templates#template-annotations). | Variable | Type | Description | | - | - | - | | `standard_footer_includes` | Chaîne | Permet de restituer le [code de suivi HubSpot](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#hubspot-tracking-code) et tout autre code inclus dans votre HTML de pied de page dans les [**paramètres du contenu**](https://app.hubspot.com/l/settings/website/pages/all-domains/page-templates) ou les options d'une page particulière. Cette balise doit être insérée directement avant la balise de fermeture du corps. | | `standard_header_includes` | Chaîne | Permet d'ajouter [jQuery, layout.css](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#included-cms-files), toute feuille de style jointe, une métabalise viewport, le code de suivi Google Analytics, d'autres métadonnées de la page et le code ajouté à la balise d'en-tête au niveau du domaine, du modèle ou de la page. Cette variable doit être ajoutée à l'élément `<head>` des modèles HTML. | ### Variables de contenu et de contact | Variable | Type | Description | | - | - | - | | `builtin_body_classes` | Chaîne | Imprime dynamiquement des classes utiles qui différencient le balisage du contenu créé avec ce modèle (c'est-à-dire le type de contenu et le nom du contenu). Cela permet de styliser plus facilement différents types de contenu ou des pages particulières. Cette variable doit être utilisée dans l'attribut class de la balise body des modèles codés. | | `request_contact.is_logged_in` | Chaîne | Si le contact demandeur est connecté ou non au [contenu privé](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content) d'un site web. Cette variable renvoie la valeur `true` si le contact demandeur est connecté, et `false` si le contact demandeur est déconnecté. Vous pouvez déconnecter un contact en l'invitant à `https://<www.yourdomain.com>/_hcms/mem/logout` utiliser l'un de vos [domaines connectés](https://knowledge.hubspot.com/fr/domains-and-urls/connect-a-domain-to-hubspot). L'utilisation de cette variable désactivera la mise en cache des pages. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | | `request_contact.list_memberships` | String | Un dictionnaire d'ID qui représente les listes dont le contact est membre. L'utilisation de cette variable désactivera la mise en cache des pages. En savoir plus sur le [prérendu des pages et les alternatives JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | | `content.language` | Dict | Un dictionnaire d'informations sur les paramètres de langue d'une page. <ul><li>`content.language.languageTag` renvoie l'identifiant de la langue d'une page (par exemple, `"en"` ou `"es"`).</li><li>`content.language.textDirection.value` renvoie la direction du texte de la langue de la page (par exemple, `"rtl"` ou `"ltr"`).</li></ul> | ## Variables de requête HTTP Les variables suivantes impriment des informations sur la requête de page HTTP. Certaines de ces variables empêcheront la mise en cache des pages en raison de la nécessité de remplir dynamiquement les données lors du chargement de la page. Découvrez-en davantage sur le [prérendu des pages et les alternatives à JavaScript](/docs/cms/best-practices/testing-staging-performance/prerendering). | Variable | Type | Description | | - | - | - | | `request.cookies` | Dict | Un dictionnaire de noms de cookies associés à des valeurs de cookies. L'utilisation de cette variable désactivera la mise en cache des pages. | | `request.domain` | Chaîne | Le domaine utilisé pour accéder à cette page. | | `request.full_url` | Chaîne | L'URL utilisée pour accéder à cette page. | | `request.path` | Chaîne | Le composant de chemin de l'URL. | | `request.path_and_query` | Chaîne | Le chemin et le composant de requête de l'URL. | | `request.query` | Chaîne | Le composant de la chaîne de requête de l'URL. `request.query_dict` divise automatiquement les chaînes de requête en paires (clé, valeur) et est recommandé par rapport à la requête brute pour la plupart des cas d'utilisation. | | `request.query_dict` | Dict | La chaîne de requête convertie en un dictionnaire de noms et de valeurs. | | `request.referrer` | Chaîne | Le référent HTTP, l'URL de la page associée à la page actuelle. L'utilisation de cette variable désactivera la mise en cache des pages. | | `request.remote_ip` | Chaîne | L'adresse IP du visiteur. L'utilisation de cette variable désactivera la mise en cache des pages. | | `request.scheme` | Chaîne | Le protocole de la requête (`http` ou `https`). | | `request.search_engine` | Chaîne | Le moteur de recherche utilisé pour trouver cette page, le cas échéant (par exemple, `google`, `aol`, `live`, `yahoo`, `images.google`). | | `request.search_keyword` | Chaîne | Le mot-clé (expression) utilisé pour trouver cette page, le cas échéant, | | `request.headers` | Chaîne | Un dictionnaire des en-têtes de requête disponibles. L'utilisation de cette variable désactivera la mise en cache des pages afin d'interpréter individuellement les en-têtes pour chaque requête. | ## Variables de blog Les variables suivantes sont disponibles pour les modèles de blog. Certaines variables ne sont disponibles que pour les listes d'articles, tandis que d'autres ne sont disponibles que pour les articles de blog. | Variable | Type | Description | | - | - | - | | `blog_author` | Chaîne | Cette variable contient des informations relatives à l'auteur du blog pour les pages de listing des auteurs du blog. Elle peut être utilisée pour créer une logique conditionnelle pour [restituer le balisage pour les listes d'auteurs de blog](/docs/cms/start-building/building-blocks/templates/blog#if-blog-author-statement). Elle contient également les propriétés suivantes :<ul><li>`blog_author.avatar`</li><li>`blog_author.bio`</li><li>`blog_author.display_name`</li><li>`blog_author.email`</li><li>`blog_author.facebook`</li><li>`blog_author.google_plus`</li><li>`blog_author.has_social_profiles`</li><li>`blog_author.linkedin`</li><li>`blog_author.twitter`</li><li>`blog_author.website`</li></ul> | | `content.blog_post_author` | Chaîne | Cette variable contient des informations individuelles sur l'auteur d'un article de blog pour un article donné. Elle contient les propriétés suivantes :<ul><li>`content.blog_post_author.avatar`</li><li>`content.blog_post_author.bio`</li><li>`content.blog_post_author.display_name`</li><li>`content.blog_post_author.email`</li><li>`content.blog_post_author.facebook`</li><li>`content.blog_post_author.google_plus`</li><li>`content.blog_post_author.has_social_profiles`</li><li>`content.blog_post_author.linkedin`</li><li>`content.blog_post_author.slug`</li><li>`content.blog_post_author.twitter`</li><li>`content.blog_post_author.website`</li></ul> | | `blog` | Chaîne | Un alias pour `group`. Par exemple, vous pouvez utiliser soit `blog.absolute_url`, soit `group.absolute_url`. | | `content.comment_count` | Entier | Le nombre de commentaires pour l'article de blog actuel. | | `content.comment_list` | Chaîne | Une liste des commentaires pour l'article de blog actuel. | | `current_page_num` | Entier | L'indice entier de la page actuelle des articles de blog dans la vue. | | `content.featured_image` | Chaîne | L'URL source de l'image en vignette sélectionnée lors de la publication du blog. | | `content.featured_image_alt_text` | Chaîne | Le texte alternatif de l'image en vignette. | | `last_page_num` | Entier | L'indice entier de la dernière page des articles de blog dans la vue. | | `next_page_num` | Entier | L'indice entier de la page suivante des articles de blog dans la vue. | | `content.next_post_featured_image` | Chaîne | L'URL de l'image en vignette du prochain article de blog, le cas échéant. | | `content.next_post_featured_image_alt_text` | Chaîne | Le texte alternatif pour l'image en vignette du prochain article, le cas échéant. | | `content.next_post_name` | Chaîne | Le nom du prochain article du blog, le cas échéant. | | `content.next_post_slug` | Chaîne | Le slug d'URL du prochain article du blog, le cas échéant. | | `content.post_body` | Chaîne | Le corps de l'article de blog. | | `content.post_list_content` | Chaîne | Le contenu du corps de l'article de blog modifié pour la page de listing. Le résultat final est affecté par les [paramètres de synthèse du blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates). Si les images en vignette sont activées dans les paramètres, cette variable supprimera automatiquement toutes les images situées au-dessus du [séparateur En savoir plus](http://knowledge.hubspot.com/fr/blog/create-and-publish-blog-posts). | | `content.post_list_summary_featured_image` | Chaîne | L'image en vignette des résumés d'articles à utiliser dans le modèle de listing de blog, telle que définie dans [les paramètres de blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates). | | `content.post_summary` | Chaîne | Le résumé de l'article de blog. Ce contenu est déterminé par le [séparateur En savoir plus](http://knowledge.hubspot.com/fr/blog/create-and-publish-blog-posts) dans l'éditeur de blog. | | `content.previous_post_featured_image` | Chaîne | L'URL de l'image en vignette de l'article de blog précédent, le cas échéant. | | `content.previous_post_featured_image_alt_text` | Chaîne | Le texte alternatif pour l'image en vignette de l'article précédent, le cas échéant. | | `content.previous_post_name` | Chaîne | Le nom de l'article de blog précédent, le cas échéant. | | `content.previous_post_slug` | Chaîne | Le slug d'URL de l'article de blog précédent, le cas échéant. | | `content.publish_date_localized` | Chaîne | Une chaîne représentant la date et l'heure de publication de l'article de blog, formatées en fonction de la [langue du blog et des paramètres de formatage de date](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#set-your-blog-s-date-formats). | | `simple_list_page` | Booléen | Un booléen indiquant si la page demandée est la page Tous les articles contenant des liens vers tous les articles du blog. | | `content.topic_list` | Dict | Peut être utilisé pour restituer le balisage d'une liste de thèmes en le parcourant en boucle. `{% for topic in content.topic_list %}` Les éléments qui s'y trouvent contiennent les propriétés suivantes : `name` et `slug`. | | `contents` | Chaîne | Le contenu est une séquence de vos articles de blog qui sont itérés à l'aide d'une boucle, disponible sur [les pages de liste de blogs](/docs/cms/start-building/building-blocks/templates/blog#if-is-listing-view-statement). | | `contents.total_count` | Entier | Le nombre total d'articles dans une liste (standard, thèmes, auteurs, etc.). | | `contents.total_page_count` | Entier | Le nombre total de pages d'articles en fonction du nombre d'articles par page. | | `contents_topics` | Chaîne | Permet d'obtenir une liste de tous les thèmes du blog dans la séquence de contenu des articles. | | `group` | Dictionnaire | Un dictionnaire contenant des variables qui se rapportent à un blog entier. | | `group.absolute_url` | Chaîne | L'URL de base d'un blog. | | `group.allow_comments` | Booléen | Permet de renvoyer une valeur `true` si les commentaires sont autorisés. | | `group.description` | Chaîne | La méta-description du blog, telle que définie dans [les paramètres du blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates). Utilisée pour la méta-description sur certaines pages de listing. | | `group.header` | Chaîne | L'en-tête du blog. | | `group.html_title` | Chaîne | Le titre de ce blog tel qu'il doit apparaître dans la balise `<title>`. | | `group.id` | Chaîne | L'ID unique d'un blog. Cet ID peut être trouvé dans l'URL du tableau de bord de blog pour un blog spécifique. | | `group.language` | Dict | Un dictionnaire contenant des informations sur la langue d'un blog. `group.language.languageTag` peut être utilisé dans des logiques conditionnelles pour restituer un contenu différent sur les différentes variations linguistiques d'un blog multilingue. | | `group.public_title` | Chaîne | Le titre de ce blog tel qu'il doit apparaître en haut des pages restituées. | | `group.show_summary_in_listing` | Booléen | Si les résumés d'articles sont affichés sur la page de listing de blog, comme défini dans [les paramètres de blog](https://knowledge.hubspot.com/fr/blog/use-a-featured-image-on-a-page-or-blog-post#display-featured-images-on-a-blog-listing-page). | | `group.slug` | Chaîne | Le chemin vers ce blog. | | `group.use_featured_image_in_summary` | Booléen | Si les images en vignette sont affichées dans les résumés d'articles, comme défini dans [les paramètres de blog](https://knowledge.hubspot.com/fr/blog/manage-your-blog-template-and-settings#select-your-blog-templates). | | `archive_list_page` | Booléen | Renvoie une valeur `true` si la page est une page d'archive de blog. Ex : `https://www.example.com/blog/archive/2020/02` renverra une valeur `true`. | ## Pages d'objets CRM dynamiques Les variables suivantes sont utilisées pour [créer des pages dynamiques avec des objets CRM](/docs/cms/start-building/features/data-driven-content/hubdb/overview#crm-object-dynamic-pages). Ces variables ne sont disponibles que pour les pages d'objets CRM dynamiques. | Variable | Type | Description | | - | - | - | | `dynamic_page_crm_object` | Dict | L'objet CRM de la page dynamique qui correspond au chemin de la requête de la page. Si la requête concerne la page de listing, une valeur `null` sera renvoyée. | | `dynamic_page_crm_object_type_fqn` | Chaîne | Le nom entièrement qualifié (FQN) de l'objet CRM. Le FQN est un identifiant unique attribué à l'objet, comprenant l'identifiant de votre compte HubSpot et le nom de l'objet. Le FQN peut être utilisé dans la [fonction `crm_objects`](/docs/cms/reference/hubl/functions#crm-objects). | ## Variables HubDB Les variables suivantes sont utilisées pour créer des pages dynamiques avec [HubDB](/docs/cms/start-building/features/data-driven-content/crm-objects#hubdb-dynamic-pages). Ces variables ne sont disponibles que pour les [pages dynamiques HubDB](/docs/cms/start-building/features/data-driven-content/hubdb/overview#hubdb-dynamic-pages). | Variable | Type | Description | | - | - | - | | `dynamic_page_hubdb_table_id` | Long | L'ID du tableau sélectionné dans l'onglet *Paramètres avancés* de l'éditeur de page. | | `dynamic_page_hubdb_row` | Dict | La ligne HubDB de la page dynamique qui correspond au chemin de la requête de la page. Si la requête concerne la page de listing, une valeur `null` sera renvoyée. | | `row.hs_id` | Long | L'ID interne d'une ligne HubDB. | | `row.hs_name` | Chaîne | Le nom de la ligne HubDB. | | `row.hs_path` | Chaîne | Le chemin de la ligne HubDB. Il est utilisé pour résoudre une requête d'une ligne dans le tableau spécifié par `dynamic_page_hubdb_table_id`. | | `row.hs_child_table_id` | Long | L'ID de tableau enfant de la ligne HubDB. Il peut être utilisé pour créer des modèles imbriqués. | | `row.hs_parent_row` | Dict | La ligne parent de la ligne HubDB. Elle ne peut être utilisée que lorsque des tableaux enfants sont utilisés pour des modèles imbriqués. | | `dynamic_page_route_level` | Entier | La profondeur actuelle d'une page dans un modèle dynamique à plusieurs niveaux. La valeur commence à `0` et augmente avec chaque couche de tableau supplémentaire. | ## Variables de nœuds de menu Les variables suivantes sont disponibles pour être utilisées sur l'objet renvoyé par la [fonction de menu HubL](/docs/cms/reference/hubl/functions#menu). | Variable | Type | Description | | - | - | - | | `node.label` | Chaîne | Le libellé de menu de la page. | | `node.url` | Chaîne | L'URL de la page. | | `node.pageId` | Nombre | L'ID de la page si elle se trouve dans HubSpot. | | `node.contentGroupId` | Nombre | L'ID de blog de la page s'il s'agit d'un article de blog HubSpot. | | `node.parentNode` | Objet | Le nœud parent du nœud actuel. Le nœud parent aura le nœud actuel dans sa propriété `children`. | | `node.children` | Liste | La liste des nœuds enfants pour le nœud actuel. | | `node.activeBranch` | Booléen | La valeur `true` est renvoyée si le nœud se trouve dans la branche de premier niveau dans laquelle se trouve la page actuelle. | | `node.activeNode` | Booléen | La valeur `true` est renvoyée si le nœud est la page actuelle. | | `node.level` | Nombre | Le nombre de niveaux de profondeur du nœud actuel par rapport aux nœuds de premier niveau. | | `node.pageTitle` | Chaîne | Le nom de la page de contenu si elle se trouve dans HubSpot. | | `node.slug` | Chaîne | Le slug de chemin d'accès de la page. | | `node.linkTarget` | Chaîne | Le lien cible de la page. | ## Éditeur dans l'application et variables d'aperçu Vous pouvez utiliser les variables suivantes pour vérifier si le contenu est affiché dans l'éditeur de contenu ou l'aperçu. Par exemple, vous pouvez les utiliser pour empêcher l'exécution de code dans l'éditeur tout en exécutant le code sur les pages en direct. ```hubl theme={null} {% if is_in_page_editor %} Display something different within the page editor. {% endif %} ``` | Variable | Type | Description | | - | - | - | | `is_in_hs_app` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'application HubSpot. | | `is_in_editor` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans un éditeur de contenu. | | `is_in_global_content_editor` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'éditeur de contenu global. | | `is_in_theme_editor` | Nombre | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'éditeur de thème. | | `is_in_page_editor` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'éditeur de page. | | `is_in_blog_post_editor` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'éditeur d'article de blog. | | `is_in_email_editor` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'éditeur d'e-mail. | | `is_in_previewer` | Nombre | Permet de renvoyer la valeur `true` si le contenu est restitué dans un contexte de prévisualisation. | | `is_in_theme_previewer` | Objet | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu du thème. | | `is_in_template_previewer` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu du modèle. | | `is_in_page_previewer` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu de la page. | | `is_in_blog_post_previewer` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu de l'article de blog. | | `is_in_email_previewer` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu des e-mails. | | `is_in_module_previewer` | Chaîne | Permet de renvoyer la valeur `true` si le contenu est restitué dans l'aperçu du module. | # Variables HubL et syntaxe des macros Source: https://developers.hubspot.fr/docs/cms/reference/hubl/variables-macros-syntax Apprenez à utiliser les variables HubL et les macros pour créer des pages dynamiques et des e-mails sur HubSpots CMS. HubL utilise des variables pour stocker et sortir des valeurs vers le modèle. Les variables peuvent être utilisées dans la logique des modèles ou faire l'objet d'une itération avec des boucles. Outre les variables, les macros sont un autre outil utile pour imprimer des sections de code répétitives et dynamiques dans vos modèles. Les variables sont des expressions délimitées par `}}`. La syntaxe de base des variables est la suivante : ```hubl theme={null} // variables {{ variable }} {{ dict.attribute }} ``` ## Variables Les variables sont soit un mot unique dans une expression, soit une entrée de dictionnaire. HubL utilise des structures de données basées sur Python appelées dictionnaires ou **dicts** pour stocker divers ensembles de variables. Par exemple, HubSpot utilise un dictionnaire « content » pour contenir de nombreux attributs qui se rapportent au contenu créé avec ce modèle. Par exemple, `content.absolute_url` imprime l'URL de l'élément de contenu spécifique. HubSpot dispose de nombreuses variables prédéfinies pouvant être utilisées dans vos modèles de pages, de blogs et d'e-mails. Nous disposons d'une [liste de référence des variables](/docs/cms/reference/hubl/variables), vous pouvez également consulter les [informations sur le développeur](/docs/cms/start-building/introduction/developer-environment/troubleshooting/troubleshooting#developer-info) lorsque vous naviguez sur n'importe quelle page de votre compte pour voir les variables disponibles sur cette page... Outre l'impression des valeurs des variables et des entrées du dictionnaire dans un modèle, vous pouvez également définir vos propres variables. Vous pouvez stocker des chaînes de caractères, des booléens, des entiers, des séquences ou créer des dictionnaires dans une seule variable. Les variables sont définies à l'intérieur des délimiteurs d'instructions en utilisant le mot « set ». Une fois stockées, les variables peuvent ensuite être imprimées en indiquant le nom de la variable sous la forme d'expression. Vous pouvez voir ci-dessous différents types d'informations stockées dans des variables, puis imprimées. Les variables doivent être des mots simples ou utiliser des traits de soulignement pour les espaces (ex : my\_variable). **HubL ne prend pas en charge pas les noms de variables avec un trait d'union.** ```text hubl.txt theme={null} {% set string_var = "This is a string value stored in a variable" %} {{ string_var}} {% set bool_var = True %} {{ bool_var}} {% set int_var = 53 %} {{ int_var}} {% set seq_var = ["Item 1", "Item 2", "Item 3"] %} {{ seq_var}} {% set var_one = "String 1" %} {% set var_two = "String 2" %} {% set sequence = [var_one, var_two] %} {{ sequence }} {% set dict_var = {"name": "Item Name", "price": "$20", "size":"XL"} %} {{ dict_var.price }} ``` ```text sortie.txt theme={null} This is a string value stored in a variable True 53 [Item1, Item2, Item3] [String 1, String 2] $20 ``` Chaque exemple ci-dessus stocke un type de variable différent, le dernier exemple stockant deux variables différentes dans une séquence. Outre l'impression de valeurs, des variables peuvent être utilisées dans les [instructions SI](/docs/cms/reference/hubl/if-statements) , comme paramètres de [filtre](/docs/cms/reference/hubl/filters) de , comme paramètres de fonction[](/docs/cms/reference/hubl/functions), mais aussi itérées avec les [boucles de](/docs/cms/reference/hubl/loops) (variables de séquence uniquement). L'utilisation courante consiste à utiliser des variables pour définir des valeurs CSS communes dans votre feuille de style. Par exemple, s'il y a une couleur que vous utilisez toujours dans votre fichier CSS. Ainsi, si vous devez changer cette couleur, vous pouvez modifier la valeur de la variable, et toutes ses références seront mises à jour la prochaine fois que vous publierez le fichier. ```css example.css theme={null} <!-- defines variable and assigns HEX color --> {% set primaryColor = "#F7761F" %} a { color: {{ primaryColor }}; {# prints variable HEX value #} } ``` ```text sortie.txt theme={null} a { color: #f7761f; } ``` ## Macros Les macros HubL vous permettent d'imprimer plusieurs déclarations avec une valeur dynamique. Par exemple, si vous avez un bloc de code que vous écrivez systématiquement, alors, une macro peut être une bonne solution, car elle imprimera le bloc de code tout en échangeant certains arguments que vous lui passez. La macro est définie, nommée et dotée d'arguments dans une instruction HubL. La macro est ensuite appelée dans une instruction qui passe ses valeurs dynamiques, ce qui imprime le bloc de code final avec les arguments dynamiques. La syntaxe de base d'une macro est la suivante : ```hubl theme={null} {% macro name_of_macro(argument_name, argument_name2) %} {{ argument_name }} {{ argument_name2 }} {% endmacro %} {{ name_of_macro("value to pass to argument 1", "value to pass to argument 2") }} ``` Si votre macro renvoie des espaces blancs sous la forme de nouvelles lignes, vous pouvez les supprimer manuellement dans les modèles. Si vous ajoutez un signe moins (`-`) au début ou à la fin d'un bloc, d'un commentaire ou d'une expression variable, les espaces avant ou après ce bloc seront supprimés. ```hubl theme={null} {% macro name_of_macro(argument_name, argument_name2) -%} {{ argument_name }} {{ argument_name2 }} {%- endmacro %} ``` Vous trouverez ci-dessous un cas d'application pratique d'une macro permettant d'imprimer une propriété CSS3 avec les différents préfixes du fournisseur, avec une valeur dynamique. Cela vous permet d'imprimer 5 lignes de code avec une seule balise macro. ```css example.css theme={null} {% macro trans(value) %} -webkit-transition: {{value}}; -moz-transition: {{value}}; -o-transition: {{value}}; -ms-transition: {{value}}; transition: {{value}}; {% endmacro %} a { {{ trans("all .2s ease-in-out") }} } ``` ```text sortie.txt theme={null} a { -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; -ms-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } ``` > [!WARNING] > > Les macros introduisent la possibilité d'avoir du code récursif. Pour éviter les problèmes de fiabilité et de performances, vous ne pouvez imbriquer les macros que sur 20 niveaux. Si vous dépassez cette limite, le message d'erreur suivant s'affichera : `limite de récursivité de 20 atteinte pour la macro <your macro name>` ## Appel Dans certains cas, vous pouvez souhaiter renvoyer des informations dynamiques supplémentaires dans le bloc macro. Par exemple, vous pouvez avoir une grande partie de code que vous souhaitez réinjecter dans la macro, en plus des arguments. Vous pouvez le faire en utilisant le bloc d'appel et caller(). Un bloc d'appel fonctionne essentiellement comme une macro, sans avoir son propre nom. L'expression caller() indique où le contenu du bloc d'appel sera rendu. Dans l'exemple ci-dessous, un `<p>`est ajouté dans une macro en plus des deux arguments. ```html example.html theme={null} {% macro render_dialog(title, class) %} <div class="{{ class }}"> <h2>{{ title }}</h2> <div class="contents"> {{ caller() }} </div> </div> {% endmacro %} {% call render_dialog("Hello World", "greeting") %} <p>This is a paragraph tag that I want to render in my.</p> {% endcall %} ``` ```text sortie.txt theme={null} <div class="greeting"> <h2>Hello World</h2> <div class="contents"> <p>This is a simple dialog rendered by using a macro and a call block.</p> </div> </div> ``` ## Import Une autre fonctionnalité intéressante des macros est qu'elles peuvent être utilisées dans plusieurs modèles en important un fichier modèle dans un autre. Pour ce faire, vous devez utiliser la balise **import** . La balise import vous permettra de spécifier un chemin d'accès au Gestionnaire de conception vers le modèle qui contient vos macros et de leur donner un nom dans le modèle dans lequel vous les incluez. Vous pouvez alors passer des valeurs dans ces macros sans avoir besoin de les redéfinir. Par exemple, imaginons que vous avez un fichier modèle.html qui contient les 2 macros suivantes : Une macro est définie pour configurer une balise d'en-tête et une autre est définie pour générer une balise de pied de page. Ce fichier est enregistré dans le Gestionnaire de conception sous le nom `my_macros.html`. ```hubl theme={null} <!-- my_macros.html file --> {% macro header(tag, title_text) %} <header> <{{ tag }}>{{ title_text }} </{{tag}}> </header> {% endmacro %} {% macro footer(tag, footer_text) %} <footer> <{{ tag }}>{{ footer_text }} </{{tag}}> </footer> {% endmacro %} ``` Dans le modèle qui utilisera ces macros, on utilise une balise d'import qui spécifie le chemin d'accès au fichier `my_macros.html`. Il nomme également le groupe de macros (dans cet exemple, `header_footer`). Les macros peuvent ensuite être exécutées en ajoutant le nom de la macro au nom donné au modèle importé. Voir l'exemple ci-dessous. ```html example.html theme={null} {% import "custom/page/web_page_basic/my_macros.html" as header_footer %} {{ header_footer.header("h1", "My page title") }} <p>Some content</p> {{ header_footer.footer("h3:", "Company footer info") }} ``` ```text sortie.txt theme={null} <header><h1>My page title</h1></header> <p>Some content</p> <footer><h3>Company footer info</h3></footer> ``` ## depuis Si vous souhaitez importer uniquement des macros spécifiques, au lieu de toutes les macros contenues dans un fichier.html distinct, vous pouvez utiliser la balise **from** . Avec la balise from, spécifiez uniquement les macros que vous souhaitez importer. En général, l'utilisation de **import** offre plus de flexibilité, mais cette alternative est également prise en charge. L'exemple ci-dessous accède au même fichier `my_macros.html` que celui de la section précédente de cet article. Mais cette fois, au lieu d'importer toutes les macros, il n'a accès qu'à la macro de pied de page. ```html example.html theme={null} {% from "custom/page/web_page_basic/my_macros.html" import footer %} {{ footer("h2", "My footer info") }} ``` ```text sortie.txt theme={null} <footer><h2>My footer info</h2></footer> ``` ## Variables dans les boucles > [!WARNING] > > Toutes les variables définies dans les boucles sont limitées à la portée de cette boucle et ne peuvent pas être exécutées depuis l'extérieur de la boucle. Vous pouvez exécuter des variables définies en dehors d'une boucle, à partir d'une boucle, mais pas l'inverse. Vous pouvez également utiliser des fonctions pour modifier des objets et définir les paramètres des valeurs sur des dictionnaires, ou effectuer des opérations sur des listes. L'exemple suivant utilise l'opération de liste [`.update` :](/docs/cms/reference/hubl/functions#update) ```text entrée.txt theme={null} {% set obj = {val : 0} %} {% for i in range(0, 10) %} {% do obj.update({val: obj.val + i }) %} {% endfor %} {{ obj.val }} ``` ```text sortie.txt theme={null} 45 ``` # Configurer un module Source: https://developers.hubspot.fr/docs/cms/reference/modules/configuration Découvrez comment configurer un module personnalisé. Lorsque vous créez un module, vous disposez d'un certain nombre d'options qui ont un impact sur l'endroit où le module est visible, la façon dont il est identifié et la façon dont il est modifié. Lors du [développement local](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli), les modules sont stockés sous forme de dossiers avec un suffixe `.module`. Ces dossiers contiennent les fichiers qui constituent les paramètres du module et le code utilisé pour le restituer. La configuration d'un module est conservée dans le fichier [meta.json](#meta-json), tandis que les champs sont configurés séparément dans un fichier [fields.json](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview#fields-json). La plupart des configurations peuvent également être modifiées à l'aide de l'éditeur de module dans le [gestionnaire de conception](/docs/cms/start-building/introduction/developer-environment/design-manager). ![Structure du dossier du module affichée localement](https://cdn2.hubspot.net/hubfs/53/module%20structure.png) À un niveau élevé, vous configurez les options de module localement dans le fichier `meta.json`, qui peut inclure les propriétés suivantes : | Parameter | Type | Description | Default | | - | - | - | - | | `icon` | Chaîne | URL d'une image à utiliser comme icône pour un module. | | | `label` | Chaîne | Label utilisé lorsque les modules sont affichés dans les éditeurs de contenu. | | | `module_id` | Nombre | Identifiant unique pour le module qui est indépendant du chemin. | | | `is_available_for_new_content` | Booléen | La valeur du bouton à bascule dans l'angle supérieur droit de l'éditeur de module dans HubSpot. Détermine si le module peut être utilisé dans le contenu. | `true` | | `global` | Booléen | Indique si le module est global ou non. | `false` | | `host_template_types` | Tableau | Un tableau `array` des types de contenu dans lesquels le module peut être utilisé. Un ou plusieurs des éléments `[ "PAGE", "BLOG_POST", "BLOG_LISTING", "EMAIL" ]`. | | | `css_assets` | Tableau | Un tableau `array` des fichiers CSS dont dépend le module. Les chemins relatifs sont pris en charge.Par exemple : `"css_assets" : [{ "path" : "../path/to/file.css" }]`. | `[]` | | `css_render_options` | Objet | Définissez si le module CSS est restitué de manière asynchrone avec `async` : `true` ou `false`. | `{"async": false}` | | `js_assets` | Tableau | Un tableau `array` des fichiers JavaScript dont dépend le module. Les chemins relatifs sont pris en charge.Par exemple : `"js_assets" : [{ "path" : "../path/to/file.js" }]`. | `[]` | | `js_render_options` | Objet | Modifie la balise JavaScript du module ajoutée à la page restituée. Les options comprennent :<ul><li>`position` : `head`/`footer`</li><li>`async` : `true`/`false`</li><li>`defer` : `true`/`false`</li><li>`type` : `string`</li></ul> | `{"position":"footer"}` | | `inline_help_text` | Chaîne | Texte d'aide qui sera affiché en haut du module dans une boîte d'information bleue (limite de 300 caractères).Fournit les informations nécessaires à l'utilisation du module. Si vous avez des informations de texte d'aide spécifiques au champ à transmettre, reportez-vous à la [documentation sur le champ de texte d'aide](/docs/cms/reference/fields/module-theme-fields#properties-used-by-all-fields). | `null` | | `master_language` | Chaîne | Lorsque les [traductions sont activées](https://knowledge.hubspot.com/design-manager/create-translations-of-your-modules#:~:text=To%20create%20translations%20of%20a,the%20right%2C%20click%20Add%20translations.), le code de la langue dans laquelle les champs du module ont été écrits à l'origine.Par exemple, `en`. | | | `placeholder` | Objet | Définit le [contenu de variable](/docs/cms/reference/hubl/tags/standard-tags#editor-placeholders) pour le module. Comprend les propriétés suivantes :<ul><li>`show_module_icon` : indique si l'icône du module s'affiche (`true`/`false`).</li><li>`title` : le titre qui apparaît sur le module dans l'éditeur. Chaîne.</li><li>`description` : la description qui apparaît sur le module dans l'éditeur. Chaîne.</li></ul> | | | `categories` | Tableau | Un tableau contenant jusqu'à trois [catégories de module](#add-categories).Par exemple : `"categories":["FORMS_AND_BUTTONS"]` | | | `content_tags` | Tableau | Un tableau d'[objets de balise de module](#adding-categories-and-tags) contenant le nom de balise et la `source` de `"USER"`.Par exemple : `"content_tags": [{` `"name" : "BUTTONS",` `"source" : "USER"``}]` | | Ci-dessous, découvrez-en davantage sur les options de configuration des modules individuels. ## Ajout d'une icône Les modules peuvent inclure une icône qui apparaît dans le [gestionnaire de conception](/docs/cms/start-building/introduction/developer-environment/design-manager) ainsi que dans les éditeurs de page et d'e-mail pour fournir un contexte visuel aux créateurs de contenu. Il est recommandé d'avoir différentes icônes pour les différents types de module de votre thème. [Pour les fournisseurs de marketplace](/docs/cms/marketplace/template-guidelines), ces icônes sont obligatoires. Il y a deux façons d'ajouter une icône : via le [gestionnaire de conception](#add-an-icon-using-the-design-manager) ou l'[ILC CMS](#add-an-icon-using-the-cli). Les icônes de module doivent être des fichiers `.svg` et leur taille ne doit pas dépasser 10 ko. Pour de meilleurs résultats, votre icône doit être simple et n'utiliser qu'une seule couleur. Les icônes qui utilisent plus d'une couleur seront automatiquement converties pour vous. L'icône du module qui s'affiche par défaut est une icône de clé à molette et de pinceau. Pour ajouter une icône à l'aide du gestionnaire de conception : 1. In your HubSpot account, navigate to **Marketing** > **Files and Templates** > **Design Tools**. 2. Use the left sidebar to locate the **module** you want to edit, then click the **module name**. 3. In the right sidebar of the module editor, click the **icon** next to the module title. 4. Upload/select your icon. After publishing your changes, the icon will appear within the page editors and design manager. ![edit-module-icon-crop](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-module-icon-crop.png) Pour ajouter une icône lors du développement local, ouvrez le fichier `meta.json` du module et ajoutez ou modifiez la valeur du paramètre `icon` pour qu'il soit au format SVG à partir du gestionnaire de fichiers. ```json theme={null} // meta.json { "global": false, "host_template_types": ["PAGE"], "icon": "http://example.com/hubfs/code.svg", "label": "Code block", "smart_type": "NOT_SMART", "is_available_for_new_content": true, "inline_help_text": "This module is for code snippets." } ``` ## Modification du libellé Le libellé utilisé lorsque les modules sont affichés dans l'éditeur peut être modifié séparément du nom du module. Cela est utile lors du développement local, car vous pouvez avoir un nom qui a du sens pour vous tout en ayant un nom différent pour les créateurs de contenu. Localement, vous modifiez le paramètre `label` pour définir le libellé. Dans le gestionnaire de conception, un champ dans l'éditeur de module est présent en dessous du nom du module. ![edit-module-label](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-module-label.png) ## Transformer en module global Pour les modules normaux, le contenu de chaque instance d'un module dans une page, un e-mail ou un modèle est indépendant. Pour certains cas d'utilisation, il est utile de pouvoir faire en sorte que toutes les instances d'un module partagent le même contenu. Lors du développement local, vous pouvez rendre un module global en définissant `global` sur `true`. Vous pouvez également [convertir des modules dans un modèle de glisser-déposer en global](https://knowledge.hubspot.com/design-manager/use-global-content-across-multiple-templates#create-new-global-content-in-the-design-manager:~:text=To%20convert%20an%20existing%20local%20module%20or%20group) via le gestionnaire de conception. ## Contrôle de l'endroit où un module peut être utilisé Lors du développement local, vous pouvez contrôler les types de contenu dans lesquels un module peut être utilisé via la propriété `hostTemplateTypes`. Découvrez-en davantage sur les [types de modèles disponibles](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#template-types). Il est également possible de masquer les modules afin qu'ils ne puissent pas être ajoutés directement aux pages en définissant la valeur `false` pour `is_available_for_new_content`. Par exemple, cela peut être utile pour les modules conçus pour les menus de navigation et la recherche. Vous pouvez mettre à jour cela dans le gestionnaire de conception en cliquant sur l'option **Type de modèle** dans la barre latérale droite. ![edit-module-template-type](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-module-template-type.png) ## Ajout de dépendances CSS et JavaScript En plus de l'utilisation de `module.css` et `module.js` pour ajouter des éléments CSS et JavaScript qui seront ajoutés à toutes les pages qui incluent une instance de module, les dépendances qui sont partagées entre les modules peuvent être jointes à l'aide de `css_assets` et `js_assets`. Les chemins peuvent être absolus ou relatifs au fichier `meta.json`. ```json theme={null} // meta.json { "css_assets": [{ "path": "../path/to/file.css" }], "js_assets": [{ "path": "../path/to/file.js" }] } ``` > [!WARNING] > > **Attention :** Lorsque vous utilisez des chemins relatifs pour référencer les dépendances, l'exécution de `hs fetch --overwrite` pour mettre à jour le module pour le développement local remplacera les chemins relatifs par des chemins absolus. À l'aide du gestionnaire de conception, vous pouvez lier des fichiers CSS et JavaScript à un module à l'aide de la section *Fichiers liés* dans la barre latérale droite de l'éditeur de module. ![edit-module-linked-files](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-module-linked-files.png) ## Ajouter des catégories et des balises Vous pouvez affecter des catégories et des balises aux modules pour les organiser dans les outils HubSpot : * [Catégories](#categories) : assignez des catégories à un module pour les organiser en groupes au sein de l'interface utilisateur de l'éditeur de contenu. Cela permet aux créateurs de contenu de trouver des modules plus facilement tout en créant du contenu dans HubSpot. Notez ce qui suit à propos des catégories : * Un module peut avoir jusqu'à trois catégories, qui sont prédéfinies et ne peuvent pas être personnalisées. * Actuellement, les catégories ne sont pas affichées dans l'interface utilisateur de l'éditeur de contenu. Cependant, vous pouvez attribuer des catégories lorsque la catégorisation est disponible dans les éditeurs. * Les modules non classés seront disponibles dans une catégorie *Tous*. * [Balises](#tags) : assignez des balises pour organiser les modules dans le gestionnaire de conception. Cela vous permet de trouver des modules plus facilement lors de la création de modèles. Dans le gestionnaire de conception, vous pouvez attribuer des catégories et des balises à l'aide de la section *Filtrer les balises* de la barre latérale droite dans l'éditeur de module. Découvrez-en davantage sur les catégories et les balises disponibles ci-dessous. ![edit-module-filter-tags](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-module-filter-tags.png) Localement, vous pouvez ajouter des catégories et des balises au fichier `meta.json` d'un module comme suit : ```json theme={null} // meta.json { "label": "Custom module", "categories": ["image_and_video", "commerce"], "content_tags": [ { "name": "BUTTONS", "source": "USER" }, { "name": "CTA", "source": "USER" } ], "is_available_for_new_content": true } ``` ### Catégories Le tableau `categories` d'un module peut contenir jusqu'à trois des catégories suivantes (insensibles à la casse) : | Catégorie | Description | | - | - | | `blog` | Modules spécifiques au blog, tels qu'un listing des publications récentes. | | `body_content` | Modules formatés pour présenter graphiquement le contenu, comme une galerie d'images. | | `commerce` | Modules spécifiques au domaine commercial, tels que les cartes de prix. | | `design` | Modules qui affectent la structure et la mise en page du contenu, tels que les accordéons. | | `functionality` | Modules qui incluent des réponses dynamiques ou un comportement sur la page, tels que des menus. | | `forms_and_buttons` | Modules qui permettent aux visiteurs du site de saisir et soumettre des données. | | `media` | Modules contenant des éléments tels que des images, des icônes, des vidéos et des bannières. | | `social` | Modules spécifiques aux réseaux sociaux, tels que le partage social. | | `text` | Modules qui ne contiennent que du texte. | ### Balises Le tableau `content_tags` d'un module peut contenir l'un des objets de balise de module suivants (sensible à la casse) : **Types de contenu :** * `ACCORDION` * `ANIMATION` * `BLOG_POST` * `BUTTONS` * `CODE` * `CTA` * `FEED` * `FORM` * `ICON` * `IMAGE` * `LISTS` * `LOGO` * `MENU` * `RICH_TEXT` * `SLIDER` * `TEXT` * `VIDEO` **Fonctions :** * `BANNER` * `BLOG` * `BRANDING` * `CALCULATOR` * `CONVERSION` * `email` * `GALLERY` * `HEADERS` * `INTERACTION` * `LAYOUT` * `MAP` * `MULTIMEDIA` * `NAVIGATION` * `PROGRESS_BAR` * `SEARCH` * `SETTINGS` * `social` * `TRANSLATION` # Versionnage par défaut des modules Source: https://developers.hubspot.fr/docs/cms/reference/modules/default-module-versioning # Modules web par défaut Source: https://developers.hubspot.fr/docs/cms/reference/modules/default-modules Découvrez les modules par défaut fournis par HubSpot pour la création de modèles de pages de site web, d'articles et de listing de blog. Ces modules sont distincts des modules d'e-mail par défaut, qui sont destinés aux modèles d'e-mails. Découvrez ci-dessous les modules par défaut fournis par HubSpot pour la création de modèles de pages de site web, d'articles de blog et de pages de listing de blog. Vous trouverez également des modules par défaut qui peuvent être utilisés pour créer des modèles de devis. Lorsque vous développez localement, vous pouvez [récupérer](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#fetch-files) un module par défaut spécifique en utilisant le chemin d'accès au module (par exemple : `hs fetch @hubspot/linked_image.module`). Pour afficher le code d'un module par défaut, vous pouvez afficher et cloner le module dans le dossier `@hubspot` du gestionnaire de conception. Dans le code, certains modules par défaut utilisent l'ID de compte par défaut 7052064, plutôt que celui appartenant au compte courant. ![design-manager-default-modules](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/design-manager-default-modules.png) > [!WARNING] > > ### Remarque : > > Les modules web par défaut sont différents des [modules d'e-mail par défaut](/docs/cms/start-building/building-blocks/modules/default-email-modules), qui sont destinés aux modèles d'e-mail. Si vos modèles d'e-mails comprennent l'un des modules web par défaut suivants, vous devez [les remplacer par le module spécifique d'e-mail correspondant](https://developers.hubspot.fr/docs/guides/cms/content/templates/default-email-modules) : > > * `cta` > * `header` > * `linked_image` > * `logo` > * `post_filter` > * `post_listing` > * `section_header` > * `social_sharing` > * `text` ## Commentaires de blog Pris en charge dans les articles de blog et les listings de blog. ```hubl theme={null} {% module "blog_comments" path="@hubspot/blog_comments" %} ``` ## Abonnement par e-mail au blog Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "blog_subscribe" path="@hubspot/blog_subscribe" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `select_blog` | Blog | Le blog à utiliser pour le module. | | | `title` | Chaîne | Titre du module (enveloppé dans une balise h3) | Abonnez-vous ici ! | | | | | | | `response_message` | Texte enrichi | Le message qui s'affiche lors de l'envoi du formulaire. | Merci pour votre abonnement ! | | | | | | ## Articles de blog Ajoutez ce module aux pages de listing de blogs pour afficher des aperçus d'articles de blog contenant le titre, l'image en vignette, l'auteur ou encore la date de publication à l'aide d'un bouton cliquable qui permet d'accéder à l'article. Ce module par défaut a été créé à l'aide de React, et vous pouvez [consulter son code source sur GitHub](https://github.com/HubSpot/cms-react/tree/main/default-react-modules/src/components/modules/BlogPosts-V0). > [!WARNING] > > ### Remarque : > > * Ce module n'est pas accessible depuis le gestionnaire de conception. Le module peut être référencé avec HubL dans des modèles codés et ajouté dans [l'éditeur de page de listing de blog](https://knowledge.hubspot.com/fr/blog/edit-a-blog-listing-page). > * Ce module remplace le module précédent obsolète `blog_listing`. ```hubl theme={null} {% module "blog_posts" path="@hubspot/blog_posts" layout="grid", columns=4, displayForEachListItem=[ "image", "title", "authorName", "tags", "publishDate", "description", "button" ] %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `layout` | Choix | La mise en page du contenu pour chaque aperçu d'article de blog.<ul><li>`grid` (par défaut) : aligne les articles dans une grille de base.</li><li>`singleColumn` : aligne les articles sur une seule colonne, avec des images en vignette sur leur propre ligne au-dessus du reste du contenu de l'article.</li><li>`sideBySide` : aligne les articles dans une colonne avec des images en vignette alignées horizontalement avec le contenu de l'article.</li></ul> | `grid` | | `columns` | Nombre | Lors de l'utilisation de la mise en page `grid`, le nombre d'articles par ligne. Peut être `2`, `3`, ou `4`. | `3` | | `alternateImage` | Booléen | Lorsque vous utilisez la mise en page `sideBySide`, définissez sur `true` pour aligner les images en vignette à droite et à gauche de l'aperçu de l'article, en alternance. | `false` | | `fullImage` | Booléen | Lorsque vous utilisez les mises en page `grid` ou `singleColumn`, définissez ce champ sur `true` pour faire de l'image en vignette l'arrière-plan de l'aperçu du post. | `false` | | `displayForEachListItem` | Tableau | Le contenu à inclure dans l'aperçu de chaque article de blog. Les choix incluent :<ul><li>`image` : l'image en vignette de l'article.</li><li>`title` : le titre de l'article.</li><li>`authorImage` : l'image de l'auteur de l'article.</li><li>`authorName` : le nom de l'auteur de l'article.</li><li>`tags` : les balises du blog de l'article.</li><li>`publishDate` : la date de publication de l'article.</li><li>`description` : la méta-description de l'article.</li><li>`button` : le bouton « En savoir plus » qui renvoie à l'article de blog.</li></ul> | `[ 'image', 'title', 'authorImage', 'authorName', 'tags', 'publishDate', 'description', 'button' ]` | | `buttonText` | Chaîne | Le texte qui s'affiche sur le bouton « En savoir plus », le cas échéant. | En savoir plus | ## Filtre d'article de blog Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "post_filter" path="@hubspot/post_filter" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `select_blog` | Blog | Sélectionnez un blog à afficher. Par défaut, utiliser le blog actuel lorsqu'il est utilisé dans un modèle de blog ou le blog principal lorsqu'il est utilisé ailleurs. | | | `filter_type` | Choix | Type de filtrage des liens à afficher. Les choix comprennent :<ul><li>`tag`</li><li>`month`</li><li>`author`</li></ul> | `tag` | | `order_by` | Choix | Ordre pour les valeurs des liens de filtre. Les choix comprennent :<ul><li>`post_count`</li><li>`name`</li></ul> | `post_count` | | `list_title` | Texte | Un en-tête H3. | Articles par balise | | `max_links` | Nombre | Nombre de liens de filtre à afficher. Laisser vide pour tout afficher. | `5` | | `expand_link_text` | Texte | Texte à afficher si une valeur à afficher et supérieure à `max_links` est disponible. | Voir tout | ## Listing d'article de blog Pris en charge dans les pages, les listings de blog et les articles de blog. > [!WARNING] > > ### Remarque : > > Une nouvelle version de ce module a été publiée fin mars 2024. Découvrez-en davantage sur le [nouveau module de listing d'articles par défaut](/docs/cms/reference/modules/default-module-versioning#post-listing). ```hubl theme={null} {% module "post_listing" path="@hubspot/post_listing" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `select_blog` | Blog | Sélectionnez un blog à afficher. Par défaut, utiliser le blog actuel lorsqu'il est utilisé dans un modèle de blog ou le blog principal lorsqu'il est utilisé ailleurs. | | | `listing_type` | Choix | Le type de listing pour vos articles. Les choix comprennent :<ul><li>`recent` : le plus récent.</li><li>`popular_all_time` : le plus populaire de tous les temps.</li><li>`popular_past_year` : le plus populaire l'année dernière.</li><li>`popular_past_six_months` : le plus populaire les six derniers mois.</li><li>`popular_past_month` : le plus populaire le mois dernier.</li></ul> | `recent` | | `list_title` | Texte | Un en-tête H3. | Articles récents | | `max_links` | Nombre | Le nombre maximal d'articles à afficher. | `5` | ## Bouton Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "button" path="@hubspot/button" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `link` | Lien | L'URL vers laquelle le bouton redirige. | `{ "url": { "type": "EXTERNAL", "href": "www.hubspot.com", "content_id": null }, "open_in_new_tab": false, "no_follow": false }` | | `button_text` | Texte | Le texte qui sera affiché sur le bouton. | Ajouter un bouton de lien ici | | | | | | | `style` | Objet | <ul><li>`override_default_style` (Booléen) </li><li>`button_font` (Police) </li><li>`button_color` (Couleur) </li><li>`text_hover_color` (Couleur) </li><li>`button_hover_color` (Couleur)</li></ul> | `{ "override_default_style": false, "button_font": { "color": "#FFFFFF", "size_unit": "px" }, "button_color": { "color": "#000000", "opacity": 100 }, "text_hover_color": { "color": "#000000", "opacity": 100 }, "button_hover_color": { "color": "#CCCCCC", "opacity": 100 } }` | ## Call-to-action Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "cta" path="@hubspot/cta" %} ``` | Paramètre | Type | Description | | - | - | - | | `guid` | Chaîne | GUID (identifiant général unique) du CTA. | ## Supprimer les données Depuis le 26 mai 2025, ce module est devenu obsolète au profit de la [fonctionnalité de page de demande de confidentialité des données](https://knowledge.hubspot.com/fr/privacy-and-consent/manage-data-privacy-requests). Les informations de référence concernant ce module ont été déplacées dans la documentation sur les [modules obsolètes](/docs/cms/versions-deprecations/deprecated/modules#delete-data). ## Séparateur Pris en charge dans les pages. Il existe une [nouvelle version de ce module](/docs/cms/reference/modules/default-module-versioning#divider) disponible pour les comptes créés après le 25 août 2022. [En savoir plus sur ce changement](https://developers.hubspot.com/changelog/divider-module-v1). ```hubl theme={null} {% module "divider" path="@hubspot/divider" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `height` | Nombre | Hauteur en pixels (px) de la ligne de séparation. | `1` | | `width` | Nombre | Largeur en pourcentage (%) de la ligne de séparation. | `50` | | `color` | Couleur | Couleur (hex) et opacité (nombre) de la ligne de séparation. | `{ "color": "#000000", "opacity": 100 }` | | `line_type` | Choix | Type de ligne. Les choix comprennent :<ul><li>`solid`</li><li>`dotted`</li><li>`dashed`</li></ul> | `solid` | | `alignment` | Choix | Alignement horizontal de la ligne de séparation. Les choix comprennent :<ul><li>`left`</li><li>`center`</li><li>`right`</li></ul> | `center` | | `show_padding` | Booléen | Afficher/masquer les marges supérieures et inférieures sur le séparateur. | `false` | | `padding` | Nombre | Valeur en pixels (px) des marges en haut et en bas de la ligne de séparation. Option disponible lorsque `show_padding` est égal à `true`. | `5` | ## Télécharger les données Depuis le 26 mai 2025, ce module est devenu obsolète au profit de la [fonctionnalité de page de demande de confidentialité des données](https://knowledge.hubspot.com/fr/privacy-and-consent/manage-data-privacy-requests). Les informations de référence concernant ce module ont été déplacées dans la documentation sur les [modules obsolètes](/docs/cms/versions-deprecations/deprecated/modules#download-data). ## Formulaire Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "form" path="@hubspot/form" form={ "form_id": "9e633e9f-0634-498e-917c-f01e355e83c6", "response_type": "redirect", "message": "Thanks for submitting the form.", "redirect_id": null, "redirect_url": "http://www.google.com" } %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `title` | Texte | En-tête H3 | | | `form` | Objet | Objet du formulaire comprenant :<ul><li>`form_id` : ID du formulaire à utiliser</li><li>`response_type` : ce que le visiteur verra après avoir soumis le formulaire :<ul><li>`inline`</li><li>`redirect`</li></ul></li><li>`message` : message intraligne si `response_type` est défini sur `inline`</li><li>`redirect_id` : ID de la page vers laquelle être redirigé si `response_type` est défini sur `redirect`.</li><li>`redirect_url` : URL vers laquelle être redirigé si `response_type` est défini sur `redirect`</li></ul> | | | `{ "form_id": "", "response_type": "redirect", "message": "Thanks for submitting the form.", "redirect_id": null, "redirect_url": "http://www.google.com" }` | | | | | `notifications_are_overridden` | Booléen | E-mail auquel envoyer une notification de formulaire au lieu des formulaires par défaut. | `false` | | `notifications_override_email_addresses` | E-mail | Liste d'e-mails à envoyer, séparés par des virgules, quand `notifications_are_overridden` est égal à `true`. | | | `follow_up_type_simple` | Booléen | Active l'envoi d'un e-mail de suivi. | `false` | | `simple_email_for_live_id` | E-mail de suivi | ID de l'e-mail de suivi. Disponible lorsque `follow_up_type_simple` est égal à `true`. | | | `sfdc_campaign` | Campagne Salesforce | Lorsque l'intégration Salesforce est active, l'ID de campagne. | | ## En-tête Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "header" path="@hubspot/header" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `value` | Texte | Texte de l'en-tête. | Un en-tête clair et percutant | | `header_tag` | Choix | Choisir un niveau d'en-tête. Les choix comprennent `h1` à `h6`. | `h1` | ## Espacement horizontal Pris en charge dans les pages, les listings de blog, les articles de blog et les e-mails. ```hubl theme={null} {% module "horizontal_spacer" path="@hubspot/horizontal_spacer" %} ``` ## Icône Pris en charge dans les pages, les listings de blog et les articles de blog. Les icônes peuvent être extraites des ensembles d'icônes Font Awesome 5.0.10 et 5.14.0. ```hubl theme={null} {% module "icon" path="@hubspot/icon" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `name` | Chaîne | Le nom de l'icône. | `"hubspot"` | | `purpose` | Choix | Une option d'accessibilité qui catégorise l'objectif de l'icône pour les lecteurs d'écran. Les valeurs disponibles sont :<ul><li>`decorative:` ignorées par le lecteur d'écran.</li><li>`semantic:` lues par le lecteur d'écran.</li></ul> | `"decorative"` | | `title` | Chaîne | Une option d'accessibilité qui attribue un titre à l'icône. | | | `style` | Chaîne | Le type d'icône. Peut être `solid`, `regular`, `light`, `thin` ou `duotone`. | `"solid"` | | `unicode` | Chaîne | La valeur unicode de l'icône. | `f3b2` | ## Image Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "linked_image" path="@hubspot/linked_image" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `img` | Image | Objet image contenant :<ul><li>`src` : URL de l'image</li><li>`alt` : texte alternatif pour l'image</li><li>`loading` : les options de chargement asynchrone incluent :<ul><li>`disabled`</li><li>`lazy`</li></ul></li><li>`width` : valeur px</li><li>`height` : valeur px</li></ul> | `{ "src": "https://static.hubspot.com/final/img/content/email-template-images/placeholder_200x200.png", "alt": "placeholder_200x200", "loading": "disabled", "width": 200, "height": 200 }` | | `link` | Texte |  : lien facultatif pour l'image. | | | `target` | Booléen | Ouvre le lien dans un nouvel onglet. | `false` | ## Grille d'image Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "image_grid" path="@hubspot/image_grid", label="image_grid.module" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `slides` | Objet | Objet contenant des informations pour chaque diapositive. L'objet contient :<ul><li>`img` : URL de l'image.</li><li>`link_url` : URL où la diapositive doit être liée.</li><li>`hover_messages` : texte superposé sur l'image au survol.</li></ul> | `[ { "show_caption": false, "open_in_new_tab": false } ]` | | `display_mode` | Choix | Mode d'affichage de la galerie d'images. Les choix comprennent : <ul><li>`standard` : curseur standard.</li><li>`thumbnail` : navigateur de vignettes.</li><li>`lightbox` : galerie de la lightbox.</li></ul> | `standard` | | `lightboxRows` | Nombre | Nombre de lignes dans la galerie de la Lightbox lorsque `display_mode` est égal à `lightbox`. | `3` | | `loop_slides` | Booléen | Active la boucle dans les diapositives avec suivant ou précédent quand `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `auto_advance` | Booléen | Avance automatiquement sur la diapositive suivante lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `num_seconds` | Nombre | Durée (en secondes) entre l'avancement à la diapositive suivante lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `5` | | `show_pagination` | Booléen | Affiche les boutons de navigation lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `sizing` | Choix | Définit la hauteur des diapositives lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix comprennent :<ul><li>`static` : hauteur fixe.</li><li>`resize` : hauteur variable.</li></ul> | `static` | | `transition` | Choix | Styles de transition de diapositive lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix sont les suivants :<ul><li>`slide` : transition par glissage.</li><li>`fade` : transition de fondu.</li></ul> | `slide` | | `caption_position` | Choix | Position des légendes des diapositives lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix comprennent :<ul><li>`below` : toujours garder les légendes sous l'image.</li><li>`superimpose` : superposer les légendes au-dessus des images.</li></ul> | `below` | ## Galerie d'images Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "gallery" path="@hubspot/gallery" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `slides` | Objet | Objet contenant des informations pour chaque diapositive. L'objet contient :<ul><li>`img` : URL de l'image.</li><li>`show_caption` : booléen pour afficher la légende de la diapositive.</li><li>`caption` : texte enrichi pour la légende.</li><li>`link_url` : URL où la diapositive doit être liée.</li><li>`open_in_new_tab` : booléen pour indiquer si le lien doit s'ouvrir dans un nouvel onglet.</li></ul> | `[ { "show_caption": false, "open_in_new_tab": false } ]` | | `display_mode` | Choix | Mode d'affichage de la galerie d'images. Les choix comprennent : <ul><li>`standard` : curseur standard.</li><li>`thumbnail` : navigateur de vignettes.</li><li>`lightbox` : galerie de la lightbox.</li></ul> | `standard` | | `lightboxRows` | Nombre | Nombre de lignes dans la galerie de la Lightbox lorsque `display_mode` est égal à `lightbox`. | `3` | | `loop_slides` | Booléen | Active la boucle dans les diapositives avec suivant ou précédent quand `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `auto_advance` | Booléen | Avance automatiquement sur la diapositive suivante lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `num_seconds` | Nombre | Durée (en secondes) entre l'avancement à la diapositive suivante lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `5` | | `show_pagination` | Booléen | Affiche les boutons de navigation lorsque `display_mode` est égal à `standard` ou `thumbnail`. | `true` | | `sizing` | Choix | Définit la hauteur des diapositives lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix comprennent :<ul><li>`static` : hauteur fixe.</li><li>`resize` : hauteur variable.</li></ul> | `static` | | `transition` | Choix | Styles de transition de diapositive lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix sont les suivants :<ul><li>`slide` : transition par glissage.</li><li>`fade` : transition de fondu.</li></ul> | `slide` | | `caption_position` | Choix | Position des légendes des diapositives lorsque `display_mode` est égal à `standard` ou `thumbnail`. Les choix comprennent :<ul><li>`below` : toujours garder les légendes sous l'image.</li><li>`superimpose` : superposer les légendes au-dessus des images.</li></ul> | `below` | ## Galerie de curseur d'images Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "unique_name" path="@hubspot/image_slider_gallery", slides=[ { "img": { "src": "", "alt": "Default image alt text" }, "caption": "<strong>1</strong> An optional caption for the image that will be added to the gallery. Enter any descriptive text for this image that you would like visitors to be able to read.", "link_url": "" }, { "img": { "src": "", "alt": "Default image alt text" }, "caption": "<strong>2</strong> An optional caption for the image that will be added to the gallery. Enter any descriptive text for this image that you would like visitors to be able to read.", "link_url": "" } ] slideshow_settings={ "slides": { "per_page": 1, "sizing": "natural", "aspect_ratio": "16/9", "show_captions": true, "caption_position": "below" }, "movement": { "transition": "slide", "loop_slides": false, "auto_advance": false, "auto_advance_speed_seconds": 5 }, "navigation": { "show_main_arrows": true, "show_thumbnails": false, "show_dots": false } } %} ``` | Paramètre | Type | Description | | - | - | - | | `slides` | Groupe de champs | Un groupe de champs contenant les champs suivants :<ul><li>`img` : URL de l'image.</li><li>`caption` : texte enrichi pour la légende de l'image.</li><li>`link_url` : URL à laquelle la diapositive renvoie.</li></ul> | | `slideshow_settings` | Groupe de champs | Le groupe de champs des paramètres du curseur d'image. Comprend les groupes de champs suivants :<ul><li>`slides` : paramètres de diapositives, y compris :<ul><li>`per_page` : nombre de diapositives par page.</li><li>`sizing` : taille de l'image.</li><li>`aspect_ratio` : rapport hauteur/largeur de l'image.</li><li>`show_captions` : un booléen</li></ul></li><li>`movement` : paramètres de comportement de glissement de l'image.</li><li>`navigation` : paramètres de navigation de l'image.</li></ul> | | `default_text` | Groupe de champs | Les éléments de texte par défaut du module, y compris :<ul><li>`default_caption` : légende de l'image.</li><li>`default_image_alt_text` : texte de l'image.</li><li>`slider_aria_label` : libellé aria par défaut du module.</li><li>`arial_label_thumbnails` : vignette aria par défaut du module.</li><li>`slider_nav_aria_label` : libellé aria par défaut de la navigation du module.</li><li>`prev` : texte de la diapositive précédente.</li><li>`next` : texte de la diapositive suivante.</li><li>`first` : aller au texte de la première diapositive.</li><li>`slideX` : aller au texte de la diapositive X.</li><li>`pageX` : aller au texte de la diapositive X.</li><li>`play` : démarrer la lecture automatique du texte.</li><li>`pause` : mettre en pause le texte de lecture automatique.</li><li>`carousel` : texte du carrousel.</li><li>`select` : texte pour sélectionner une diapositive à afficher.</li><li>`slide` : texte de la diapositive.</li><li>`slidelabel` : libellé de la diapositive.</li></ul> | ## Sélecteur de langue Pris en charge dans les pages. ```hubl theme={null} {% module "language_switcher" path="@hubspot/language_switcher" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `display_mode` | Choix | La langue du texte dans le sélecteur de langue. Les options comprennent :<ul><li>`pagelang` : les noms des langues s'afficheront dans la langue de la page sur laquelle se trouve le sélecteur.</li><li>`localized` : le nom de chaque langue s'affichera dans cette langue.</li><li>`hybrid` : une combinaison des deux.</li></ul> | `localized` | ## Logo Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "logo" path="@hubspot/logo" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `img` | Image | Objet image contenant :<ul><li>`override_inherited_src` : remplace le logo par défaut des paramètres</li><li>`src` : URL de l'image</li><li>`alt` : texte alternatif du logo</li></ul> | `{ "override_inherited_src": false, "src": null, "alt": null }` | | `link` | Texte | Lien facultatif pour le logo. Si aucune URL n'est spécifiée, votre logo sera lié à l'*URL du logo* définie dans les [paramètres de votre marque](https://knowledge.hubspot.com/fr/branding/edit-your-logo-favicon-and-brand-colors#edit-your-logo). | | | `open_in_new_tab` | Booléen | Ouvre le lien dans un nouvel onglet. | `false` | | `suppress_company_name` | Booléen | Masquer le nom de l'entreprise lorsqu'aucune image n'est sélectionnée. | `true` | | `heading_level` | Choix | Choisissez un niveau d'en-tête lorsqu'aucune image n'est sélectionnée et `suppress_company_name` est égal à `false`. Les choix comprennent `h1` à `h6`. | `h1` | ## Grille de logo Une grille personnalisable de conteneurs pour afficher les logos de manière uniforme. Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "logo grid" path="@hubspot/logo_grid" group_logos=[ { "logo": { "loading": "lazy", "alt": "company_logo", "src": "https://www.example.com/Logos/color/logo.png" } }, { "logo": { "loading": "lazy", "alt": "company2_logo", "src": "https://www.example.com/Logos/color/logo2.png" } }, { "logo": { "alt": "lorem-logo", "height": 40, "loading": "lazy", "max_height": 40, "max_width": 175, "src": "https://www.example.com/Logos/color/logo3.png", "width": 175 } } ], styles={ "group_logo": { "group_background": { "aspect_ratio": "1/1", "background_color": { "color": "#8E7CC3", "opacity": 100 } }, "group_spacing": { "padding": { "padding": { "bottom": { "units": "px", "value": 75 }, "left": { "units": "px", "value": 75 }, "right": { "units": "px", "value": 75 }, "top": { "units": "px", "value": 75 } } } }, "max_logo_height": 85 }, "group_logo_grid": { "column_count": 3, "grid_gap": 54 } } %} ``` | Paramètre | Type | Description | | - | - | - | | `group_logos` | Tableau | Un tableau contenant un objet pour chaque logo de la grille. | | `logo` | Objet | Dans `group_logos`, un objet pour chaque logo de la grille. Chaque logo peut inclure les paramètres suivants :<ul><li>`src` : le chemin d'accès au fichier du logo.</li><li>`loading` : le comportement de [chargement asynchrone](/docs/cms/best-practices/testing-staging-performance/lazy-loading) du logo.</li><li>`alt` : le texte alternatif du logo.</li><li>`height` : la hauteur du logo.</li><li>`width` : la largeur du logo.</li><li>`max_height` : la hauteur maximale du logo.</li><li>`max_width` : la largeur maximale du logo.</li></ul> | | `styles` | Tableau | Un tableau contenant les champs de style qui affectent la disposition de la grille, les conteneurs de logo et les images de logo. Ce tableau contient les groupes de styles suivants :<ul><li>`group_logo` : les styles qui affectent les conteneurs de logo et les images de logo. Contient les éléments suivants :<ul><li>`group_background` : styles qui définissent le rapport hauteur/largeur et la couleur d'arrière-plan des conteneurs de la grille. Les rapports hauteur/largeur comprennent : `1/1`, `4/3`, `16/9`.</li><li>`group_spacing` : styles qui définissent le remplissage interne du conteneur de logo. Pour les logos plus larges, une valeur de remplissage plus élevée peut réduire la largeur du logo.</li><li>`max_logo_height` : la hauteur maximale de chaque logo.</li></ul></li><li>`group_logo_grid` : les styles qui définissent la disposition de la grille, y compris :<ul><li>`column_count` : le nombre de colonnes dans la grille.</li><li>`grid_gap` : l'espacement entre les éléments de la grille.</li></ul></li></ul> | ## Réunions Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "meetings" path="@hubspot/meetings" %} ``` | Paramètre | Type | Description | | - | - | - | | `meeting` | Réunion | Sélectionner un lien de prise de rendez-vous. | ## Connexion des membres à des réseaux sociaux Fournit les options de connexion Google et Facebook pour [les pages de contrôle d'accès](/docs/cms/start-building/features/memberships/overview). L'utilisateur doit se connecter avec un compte lié à l'adresse e-mail de sa fiche d'informations d'un contact dans le CRM. Vous pouvez choisir les connexions aux réseaux sociaux à activer. Pris en charge dans les pages de connexion au contrôle d'accès. ```hubl theme={null} {% module "social" path="@hubspot/membership_social_logins", clientid="" appid="" facebook_enabled=true google_enabled=true %} ``` > [!NOTE] > > Facebook nécessite d'avoir un [compte de développeur Facebook](https://developers.facebook.com/docs/development/register) et la [création d'une application Facebook](https://developers.facebook.com/docs/development/create-an-app) avec des paramètres de base. Une fois que vous réalisez cette étape, vous transmettrez votre ID d'application au module. > > Google exige un compte Google et [des informations d'identification d'autorisation créées](https://developers.google.com/identity/sign-in/web/sign-in#create_authorization_credentials), et une fois que possédez ces informations, vous transmettrez votre ID de client de l'application au module. | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `facebook_appid` | Chaîne | Votre ID d'application Facebook. | | | `facebook_enabled` | Booléen | Active le bouton de connexion Facebook. `facebook_appid` est obligatoire. | `False` | | `google_clientid` | Chaîne | Votre identifiant de client Google. | | | `google_enabled` | Booléen | Permet d'activer le bouton de connexion Google. `google_clientid` est obligatoire. | `False` | ## Menu Pris en charge dans les pages, les articles de blog et les listings de blog. Vous cherchez à créer votre propre menu personnalisé ? Essayez notre [fonction menu()](/docs/cms/reference/hubl/functions#menu). ```hubl theme={null} {% module "menu" path="@hubspot/menu" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `id` | Menu | ID du menu. | | | `root_type` | Choix | Type de menu avancé. Les choix comprennent :<ul><li>`site_root` : toujours afficher les pages de premier niveau dans le menu.</li><li>`top_parent` : afficher les pages du menu relatives à la section consultée.</li><li>`parent` : afficher les pages du menu qui sont liées à la page consultée.</li><li>`breadcrumb` : menu de style fil d'Ariane (utilise le flux horizontal).</li></ul> | `site_root` | | `max_levels` | Choix | Détermine le nombre d'arborescences de menu enfant qui peuvent être étendues dans le menu Les choix compris sont de `1` à `10` | `2` | | `flow` | Choix | Orientation du menu. Les choix comprennent :<ul><li>`horizontal`</li><li>`vertical`</li></ul> | `horizontal` | | `flyouts` | Booléen | La fonctionnalité de survol est activée pour les éléments de menu enfants. | `true` | ## Pied de page Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "page_footer" path="@hubspot/page_footer" %} ``` ## Invite de mot de passe Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "password_prompt" path="@hubspot/password_prompt" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `submit_button_text` | Texte | Texte qui apparaît sur le bouton d'envoi. | Soumettre | | `password_placeholder` | Texte | Texte d'espace réservé pour le champ du mot de passe. | Mot de passe | | `bad_password_message` | Texte enrichi | Message pour afficher lorsqu'un mot de passe n'est pas saisi correctement. | Veuillez ressayer | ## Outils de paiement Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "payments" path="@hubspot/payments" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `payment` | Chaîne | Pour configurer le module afin qu'il utilise un lien de paiement spécifique, incluez l'ID du lien de paiement. Vous pouvez [trouver l'ID](/docs/cms/reference/fields/module-theme-fields#link) dans l'URL lorsque vous modifiez le lien de paiement. | | | `checkout_location` | Chaîne |  : définissez si le formulaire de paiement s'ouvre dans un nouvel onglet ou dans une superposition. Les valeurs disponibles sont les suivantes :<ul><li>`new_tab` : ouvre le formulaire de paiement dans un nouvel onglet.</li><li>`overlay` : ouvre le formulaire de paiement dans une superposition glissante.</li></ul> | `"new_tab"` | | `button_text` | Chaîne | Définit le texte du bouton de paiement. | `"Checkout"` | | `button_target` | Choix | Indique si le bouton utilise un lien de paiement HubSpot ou un lien externe. Les choix comprennent :<ul><li>`payment_link`</li><li>`custom_link`</li></ul> | `"payment_link"` | | `button_link` | Lien | Quand `button_target` est défini sur `custom_link`, il définit la destination du lien externe. Les types pris en charge comprennent :<ul><li>`EXTERNAL`</li><li>`CONTENT`</li></ul> | `EXTERNAL` | ## Produit Affiche un produit de la [bibliothèque de produits](https://knowledge.hubspot.com/fr/products/how-do-i-use-products) du compte. Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module path="@hubspot/product", product={ "id" : 2124070179 }, group_button={ "button_text" : "Buy", "override_product_button" : true, "button_override" : { "no_follow" : false, "open_in_new_tab" : false, "sponsored" : false, "url" : { "href" : "https://www.test.com", "type" : "EXTERNAL" } }, group_description={ "description_override" : "Monthly gym membership with access to shared locker facilities.", "override_product_description" : true }, group_name={ "heading_level" : "h3", "name_override" : "Gym membership", "override_product_name" : true }, group_image={ "image_override" : { "alt" : "360_F_317724775_qHtWjnT8YbRdFNIuq5PWsSYypRhOmalS", "height" : 360, "loading" : "lazy", "src" : "https://2272014.fs1.hubspotusercontent-na1.net/hubfs/2272014/360_F_317724775_qHtWjnT8YbRdFNIuq5PWsSYypRhOmalS.jpg", "width" : 640 }, "override_product_image" : true } %} ``` | Paramètre | Type | Description | | - | - | - | | `product` | Produit | Le produit à afficher, spécifié par l'ID du produit. | | `group_button` | Groupe de champs | Par défaut, le module inclut un bouton qui dirige les utilisateurs vers l'URL définie du produit. Pour personnaliser la destination du bouton, incluez ce groupe de champs facultatif avec les champs suivants :<ul><li>`button_text` : une chaîne qui définit le texte du bouton.</li><li>`override_product_button` : défini sur `true` pour remplacer les paramètres de lien de bouton par défaut. Puis, ajoutez un objet `button_override`. Découvrez-en davantage sur `button_override` ci-dessous.</li></ul> | | `button_override` | Objet | Dans le groupe de champs `group_button`, cela définit le comportement de l'URL du bouton lorsque `override_product_button` est défini sur `true`. Inclut les champs suivants :<ul><li>`no_follow` : champ booléen pour le comportement du lien [no\_follow](https://ahrefs.com/blog/nofollow-links/).</li><li>`open_link_in_new_tab` : champ booléen pour le comportement ouvert du lien.</li><li>`url` : un objet qui spécifie la destination du bouton.</li></ul>Dans le champ `url`, vous pouvez définir le type de destination via le champ `type`, qui prend en charge les types de contenu suivants :<ul><li>`EXTERNAL` : une URL standard. Inclure l'URL dans un champ `href`.</li><li>`CONTENT` : une page HubSpot. Incluez l'ID de la page dans un champ `content_id`.</li><li>`PAYMENT` : un lien de paiement. Incluez le lien de paiement dans un champ `href`.</li><li>`EMAIL_ADDRESS` : une adresse e-mail. Incluez l'adresse dans un champ `href`.</li></ul> | | `group_name` | Groupe de champs | Par défaut, le module affichera le nom du produit en haut du module sous la forme h3. Pour personnaliser le nom, incluez ce groupe de champs facultatif avec les champs suivants :<ul><li>`heading_level` : la taille de l'en-tête. Peut être `h1` - `h6`.</li><li>`override_product_name` : défini sur `true` pour spécifier le texte plutôt que le nom du produit.</li><li>`name_override` : la chaîne que vous souhaitez afficher en haut du module.</li></ul> | | `group_description` | Groupe de champs | Par défaut, le module affichera la description de l'ensemble de produits. Pour personnaliser la description, incluez ce groupe de champs facultatif avec les champs suivants :<ul><li>`override_product_description` : définit sur `true` pour personnaliser la description du produit.</li><li>`description_override` : une chaîne contenant votre nouvelle description.</li></ul> | | `group_image` | Groupe de champs | Par défaut, le module affichera l'image définie du produit. Pour personnaliser cette image, incluez ce groupe de champs facultatif avec les champs suivants :<ul><li>`override_product_image` : défini sur `true` pour indiquer une nouvelle image. </li><li>`image_override` : un objet qui spécifie la nouvelle image, y compris les propriétés suivantes :<ul><li>`alt`</li><li>`height`</li><li>`loading`</li><li>`src`</li><li>`width`</li></ul></li></ul> | ## Téléchargement du devis Pris en charge dans les modèles de devis. ```hubl theme={null} {% module "download" path="@hubspot/quote_download" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `button_text` | Chaîne | Le texte affiché sur le bouton de téléchargement. | `Download` | | `download_error` | Chaîne | Un message d'erreur qui s'affiche en cas d'échec du téléchargement. | `There was a problem downloading the quote. Please try again.` | ## Paiement du devis Pris en charge dans les modèles de devis. ```hubl theme={null} {% module "payment" path="@hubspot/quote_payment" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `heading_text` | Chaîne | L'en-tête affiché au-dessus de la section de paiement d'un modèle de devis. | `Payment` | | `heading_tag` | Choix | Le type d'en-tête utilisé pour afficher `heading_text`. Les valeurs comprennent : `h1`, `h2`, `h3`, `h4`, `h5`, `h6`. | `h3` | | `checkout` | Chaîne | Le texte du bouton de paiement. | `Pay now` | | `needs_signature` | Chaîne | Texte du bouton de chaîne lorsqu'une signature est requise. | Le paiement ne peut être effectué car le devis n'est pas signé. | | `checkout_error` | Texte enrichi | Message qui s'affiche en cas d'erreur lors du paiement. | Un problème est survenu lors de la configuration du paiement. Veuillez contacter la personne qui vous a envoyé cette facture. | | | | | | | `payment_status_error` | Texte enrichi | Message qui s'affiche en cas d'erreur lors d'une tentative de paiement. | Un problème est survenu lors du chargement du statut du paiement concernant ce devis. Veuillez essayer d'actualiser la page. | | | | | | | `paid` | Chaîne | Un indicateur de statut de paiement réussi. | `Paid` | | `payment_processing` | Chaîne | Un indicateur de l'état du traitement des paiements. | `Payment processing` | ## Signature du devis Pris en charge dans les modèles de devis. ```hubl theme={null} {% module "signature" path="@hubspot/quote_signature" %} ``` Lorsqu'un devis nécessite une signature électronique, les champs suivants sont disponibles dans un objet `esignature` : | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `pretext` | Texte enrichi | Texte d'explication de la signature électronique. | Avant de signer votre devis, un email doit vous être envoyé pour vérifier votre identité. Trouvez votre profil ci-dessous pour demander un e-mail de vérification. | | | | | | | `verify_button` | Chaîne | Texte qui s'affiche sur le bouton de vérification. | Vérifier pour signer | | | | | | | `failure` | Chaîne | Texte d'alerte qui s'affiche lorsque les informations de signature ne peuvent pas être récupérées. | Un problème est survenu lors de la récupération des informations sur la signature. Veuillez recharger la page. | | | | | | | `verification_sent` | Chaîne | Indicateur de statut qui apparaît lorsque la demande de vérification a été envoyée avec succès au signataire du devis. | `Verification sent` | | `signed` | String | Texte qui s'affiche lorsque le devis a été signé avec succès. | Signé | Lorsqu'un devis nécessite une signature imprimée, les champs suivants sont disponibles dans un objet `print_signature` : | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Texte enrichi | Texte affiché en haut de la section de signature. | `Signature` | | `signature` | Chaîne | Texte qui s'affiche à côté du champ de signature. | `Signature` | | `date` | Chaîne | Texte qui s'affiche à côté du champ de date. | `Date` | | `printed_name` | Chaîne | Texte qui s'affiche à côté du champ de nom imprimé. | Nom (en majuscules) | | | | | | | `countersignature` | Objet | Un objet contenant du contenu pour la section de contre-signature. Cet objet peut contenir les champs suivants :<ul><li>`header` : texte qui s'affiche en haut de la section de contre-signature.</li><li>`countersignature` : texte qui s'affiche à côté du champ de contre-signature.</li><li>`date` : texte qui s'affiche à côté du champ de date.</li><li>`printed_name` : texte qui s'affiche à côté du champ de nom imprimé.</li></ul> | `Signed` | ## Lignes de produit Pris en charge dans les modèles de devis. Ce module inclut également le texte par défaut utilisé sur les devis personnalisés. ```hubl theme={null} {% module "module_165350106057652" path="@hubspot/line_items", label="line_items.module" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `title` | Texte | Le titre de la colonne de la ligne de produit. | Description de la colonne | | | | | | | `use_additional_product_property` | Booléen | Case à cocher pour permettre aux utilisateurs de sélectionner des colonnes de lignes de produit supplémentaires à partir des propriétés du produit. | `False` | | `additional_product_properties` | Choix | Une propriété de produit. Les choix comprennent : <ul><li>`price` : prix de la ligne de produit. </li><li>`item_description` : description de la ligne de produit. </li><li>`quantity` : nombre de lignes de produit. </li><li>`amount` : coût total des lignes de produits. </li><li>`hs_recurring_billing_start_date` : date de début de facturation pour les lignes de produits récurrentes. </li><li>`discount` : le montant de la remise s'applique à la ligne de produit.</li></ul> | | | `crm_product_property` | Propriété d'objet CRM | Sélectionnez une propriété de produit à afficher en tant qu'en-tête de colonne de ligne de produit. | | ## Texte enrichi Pris en charge dans tous les types de modèles. ```hubl theme={null} {% module "rich_text" path="@hubspot/rich_text" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `html` | Texte enrichi | Bloc HTML. | ` ## Something Powerful \n ### Tell The Reader More \n The headline and subheader tells us what you're [offering](https://developers.hubspot.fr/docs\"#\"), and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for. \n Remember: \n<ul>\n<li>Bullets are great</li>\n<li>For spelling out [benefits](https://developers.hubspot.fr/docs\"#\") and</li>\n<li>Turning visitors into leads.</li>\n</ul>` | ## Listing RSS Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "rss_listing" path="@hubspot/rss_listing" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `title` | Texte | Un en-tête H3. | `"Test"` | | `rss_feed_type` | Choix | Type de flux RSS. Les choix comprennent :<ul><li>`blog` - blog hébergé par HubSpot.</li><li>`external` - un flux RSS externe.</li></ul> | `blog` | | `rss_url` | Texte | URL RSS à utiliser lorsque `rss_feed_type` est égal à `external`. | | | `content_group_id` | Blog | ID du blog à utiliser si `rss_feed_type` est égal à `blog`. | | | `topic_id` | Balise | (facultatif) ID de la balise à filtrer quand `rss_feed_type` est égal à `blog`. | | | `number_of_items` | Nombre | Le nombre maximal d'articles à afficher. | `5` | | `include_featured_image` | Booléen | Inclure l'image en vignette. | `false` | | `show_author` | Booléen | Affiche le nom de l'auteur. | `true` | | `attribution_text` | Texte | Texte qui attribue un auteur à un article. S'affiche lorsque `show_author` est égal à `true`. | `"by"` | | `show_detail` | Booléen | Affiche le résumé de l'article. | `true` | | `limit_to_chars` | Nombre | Limite la longueur du texte récapitulatif lorsque `show_detail` est égal à `true`. | `200` | | `click_through_text` | Texte | Texte qui s'affiche pour le lien d'un clic publicitaire à la fin d'un résumé d'article lorsque `show_detail` est égal à `true`. | En savoir plus | | | | | | | `show_date` | Booléen | Affiche la date de publication. | `true` | | `publish_date_format` | Choix | Format de la date de publication lorsque `show_date` est égal à `true`. Les choix comprennent :<ul><li>`short` (par exemple : 11/06/06 12 h 00)</li><li>`medium` (par exemple : le 6 juin 2006 12 h 00 : 00)</li><li>`long` (par exemple : le 6 juin 2017 12 h 00 : 00 HAE)</li><li>`MMMM d, yyyy 'at' h:mm a` (par exemple : le 6 juin 2006 à 12 h 00)</li><li>`h:mm a 'on' MMMM d, yyyy` (par exemple : à 12 h 00 le 6 juin 2006)</li></ul> | `short` | | `publish_date_text` | Texte | Texte indiquant le moment où un article a été publié lorsque `show_date` est égal à `true`. | posté le | | | | | | ## Champ de recherche de site Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "search_input" path="./local-search_input" placeholder="Search" include_search_button=true results={ "use_custom_search_results_template": "true", "path_id": "77977569400" } %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `field_label` | Texte | Texte du libellé du champ de recherche | | | `placeholder` | Texte | Texte d'espace réservé pour le champ de saisie. | Recherche | | `include_search_button` | Booléen | Inclut un bouton de recherche. | `false` | | `content_types` | Objet | Les types de contenu à inclure dans les résultats de recherche. L'objet contient les clés suivantes avec des valeurs booléennes :<ul><li>`website_pages`</li><li>`landing_pages`</li><li>`blog_posts`</li><li>`knowledge_articles`</li></ul> | `{ "website_pages": true, "landing_pages": false, "blog_posts": true, "knowledge_articles": false }` | | `results` | Objet | Un objet qui active les contrôles pour l'utilisation d'une page de résultats de recherche personnalisée. Comprend les propriétés suivantes : <ul><li>`use_custom_search_results_template` **(booléen) :** si cette propriété est définie sur `true`, les utilisateurs peuvent sélectionner une page de résultats de recherche personnalisée. La valeur par défaut est `false`.</li><li>`path_id` **(chaîne) :** l'ID de la page qui sera utilisée pour les résultats de recherche. La page référencée doit contenir le module de résultats de recherche.</li></ul> | | ## Résultats de recherche Pris en charge dans les pages, les articles de blog et les listings de blog. ```hubl theme={null} {% module "search_results" path="@hubspot/search_results" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `display_featured_images` | Booléen | Affiche les images en vignette pour les éléments. | `false` | ## En-tête de section Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "section_header" path="@hubspot/section_header" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `header` | Texte | Contenu du titre de section. | Un en-tête clair et percutant | | `heading_level` | Choix | Niveau d'en-tête pour `header`. Les choix comprennent `h1` à `h6`. | `h1` | | `subheader` | Texte | Paragraphe du texte du sous-titre pour la section. | Un en-tête plus discret | ## Menu simple Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "simple_menu" path="@hubspot/simple_menu" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `menu_tree` | Menu simple | Objet de menu simple. | `[]` | | `orientation` | Choix | Orientation du menu. Les choix comprennent :<ul><li>`horizontal`</li><li>`vertical`</li></ul> | `horizontal` | ## Suivi sur les réseaux sociaux Ajoutez des liens vers vos profils de réseaux sociaux, avec une réorganisation par glisser-déposer dans l'éditeur de contenu. Insère automatiquement des icônes en fonction de l'URL des réseaux sociaux, mais les icônes peuvent être remplacées. Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "social_follow" path="@hubspot/social_follow" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `link` | Texte | Le lien de destination pour la page de réseaux sociaux ajouté dans l'éditeur. | | | `open_in_new_window` | Booléen | Lorsqu'il est défini sur `false`, le lien s'ouvrira dans le même onglet du navigateur. | `true` | | `is_podcast` | Booléen | Défini sur `true` pour afficher une icône « podcast » au lieu d'une icône par défaut ou personnalisée. | `false` | | `customize_alt_text` | Booléen | Par défaut, un texte alternatif est généré automatiquement. Si défini sur `true`, vous pouvez remplacer le texte alternatif par défaut par une valeur personnalisée à l'aide du champ `aria_label`. | `false` | | `aria-label` | Chaîne | Lorsque `customize_alt_text` est définit sur `true`, ce champ définit le texte alternatif de l'icône (par exemple : `Follow us on Facebook`). Ceci est utilisé par les lecteurs d'écran pour décrire l'icône aux utilisateurs malvoyants. | `False` | | `customize_icon` | Booléen | Par défaut, les icônes sont renseignées automatiquement en fonction de l'URL du lien. Si défini sur `true`, vous pouvez utiliser le champ `custom_icon` pour sélectionner l'une des autres icônes fournies (Font Awesome 6.4.2). | `false` | | `custom_icon` | Icône | Lorsque `customize_icon` est défini sur `true` et `is_podcast` sur `false`, utilisez ce champ pour spécifier une icône personnalisée à partir de l'ensemble fourni. Les icônes disponibles proviennent de Font Awesome 6.4.2. | | ## Partage sur les réseaux sociaux Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "social_sharing" path="@hubspot/social_sharing" %} ``` Remarque : la variable `social_link_url` dans la colonne par défaut ci-dessous a la même valeur que le paramètre `link`. | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `link` | Texte | Il s'agit du lien de destination qui sera raccourci afin de faciliter les partages sur les réseaux sociaux. | | | `facebook` | Objet | Objet contenant :<ul><li>`enabled` : booléen pour activer l'élément de réseaux sociaux</li><li>`custom_link_format` : URL personnalisée pour l'URL de partage de réseaux sociaux</li></ul> | `{ "enabled": false, "custom_link_format": "http://www.facebook.com/share.php?u={{ social_link_url }}" }` | | `twitter` | Objet | Objet contenant :<ul><li>`enabled` : booléen pour activer l'élément de réseaux sociaux</li><li>`custom_link_format` : URL personnalisée pour l'URL de partage sur les réseaux sociaux</li></ul> | `{ "enabled": false, "custom_link_format": "https://twitter.com/intent/tweet?original_referer=\{\{ social_link_url }}&url={{ social_link_url }}&source=tweetbutton&text={{ social_page_title\|urlencode }}" }` | | `linkedin` | Objet | Objet contenant :<ul><li>`enabled` : booléen pour activer l'élément de réseaux sociaux</li><li>`custom_link_format` : URL personnalisée pour l'URL de partage de réseaux sociaux</li></ul> | `{ "enabled": false, "custom_link_format": "http://www.linkedin.com/shareArticle?mini=true&url={{ social_link_url }}" }` | | `pinterest` | Objet | Objet contenant :<ul><li>`enabled` : booléen pour activer l'élément de réseaux sociaux</li><li>`custom_link_format` : URL personnalisée pour l'URL de partage de réseaux sociaux.</li><li>`pinterest_media` : objet d'image qui comprend :<ul><li>`src` : URL d'image.</li><li>`alt` : texte alternatif pour l'image.</li></ul></li></ul> | `{ "enabled": false, "custom_link_format": "http://pinterest.com/pin/create/button/?url={{ social_link_url }}&media={{ pinterest_media }}", "pinterest_media": { "src": "", "alt": null } }` | | `email` | Objet | Objet contenant :<ul><li>`enabled` : booléen pour activer l'élément de réseaux sociaux</li><li>`custom_link_format` : URL personnalisée pour l'URL de partage de réseaux sociaux</li></ul> | `{ "enabled": false, "custom_link_format": "mailto:?subject=Check out {{ social_link_url }} &body=Check out {{ social_link_url }}" }` | ## Carte mise en onglet Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module path="@hubspot/tabbed_card", tabs=[ { "content" : "<p>This is the descriptive text contained in tab 1.</p>", "tab_label" : "Tab 1 label" }, { "content" : "<p>This is the descriptive text contained in tab 2.</p>", "tab_label" : "Tab 2 label" } ], fixed_height=false %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `tabs` | Groupe de champs | Un groupe de champs qui contient le libellé de chaque onglet et le contenu textuel de chaque onglet. Contient les champs suivants :<ul><li>`tab_label` : le libellé de l'onglet.</li><li>`content` : le contenu en texte enrichi de l'onglet.</li></ul> | `"Some additional information in one line"` | | `fixed_height` | Booléen | Par défaut, les onglets seront définis à une hauteur fixe afin que la hauteur du conteneur reste la même lorsque vous passez d'un onglet à l'autre. Vous pouvez définir ceci sur `false` si vous souhaitez que la hauteur du conteneur de cartes mis en onglet soit basée sur le contenu de l'onglet actif. | `False` | ## Une ligne de texte Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "text" path="@hubspot/text" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `value` | Texte | Ajoutez votre texte à ce paramètre. | Informations supplémentaires dans une ligne | | | | | | ## Vidéos Pris en charge dans les pages, les listings de blog et les articles de blog. ```hubl theme={null} {% module "video" path="@hubspot/video" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `video_type` | Choix | Type de vidéo. Les choix comprennent :<ul><li>`embed` : code intégré d'une source externe.</li><li>`hubspot_video` : vidéo hébergée par HubSpot.</li></ul> | `embed` | | `hubspot_video` | Lecteur vidéo | Vidéo hébergée par HubSpot. Utilisé lorsque `video_type` est égal à `hubspot_video`. | | | `embed_field` | Intégrer | Prend en charge les types d'intégration :<ul><li>`oembed`<ul><li>`video` : URL pour la vidéo.</li></ul></li><li>`html` : code d'intégration pour la vidéo.</li></ul> | | | `oembed_thumbnail` | Image | Remplace l'image miniature oembed lorsque `video_type` est égal à `embed` et `embed_field` est égal à `oembed`. | | | `style_options` | Objet | Objet contenant `oembed_thumbnail_play_button_color` - Champ de couleur. | `{"oembed_thumbnail_play_button_color":"#ffffff"}` | | `placeholder_fields` | Objet | Objet contenant :<ul><li>`placeholder_title` : champ de texte</li><li>`placeholder_description` : champ de texte.</li></ul> | `{"placeholder_title":"No video selected", "placeholder_description":"Select a video type in the sidebar."}` | ## Intégrer une vidéo (page de destination) Pris en charge dans les pages. ```hubl theme={null} {% module "video_embed_lp" path="@hubspot/video_embed_lp" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `url` | Texte | URL pour la vidéo. Les URL de Vimeo et YouTube sont prises en charge. | `"https://www.youtube.com/watch?v=X1Rr5BFO5rg"` | | `is_full_width` | Booléen | Définit la vidéo en pleine largeur (`true`) ou définit manuellement la largeur et la hauteur (`false`). | `true` | | `max_width` | Nombre | Largeur maximale (px) | `800` | | `max_height` | Nombre | Hauteur maximale (px) | `450` | ## Lien WhatsApp Pris en charge dans les pages, les articles de blog et les pages de listing de blog. Nécessite un [canal WhatsApp connecté](https://knowledge.hubspot.com/fr/inbox/connect-whatsapp-to-the-conversations-inbox). ```hubl theme={null} {% module "whatsapp_link" path="@hubspot/whatsapp_link", label="whatsapp_link" %} ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `whatsapp_number` | URL | Sélectionne l'un des [canaux WhatsApp connectés au compte](https://knowledge.hubspot.com/fr/inbox/connect-whatsapp-to-the-conversations-inbox). | | | `optin_text` | Choix | Le texte d'[inscription et de désinscription](https://knowledge.hubspot.com/fr/inbox/collect-consent-for-whatsapp-conversations#subscribe-a-contact-using-opt-in-keywords-in-a-whatsapp-thread). | | | `whatsapp_display` | Choix | Sélectionne si le bouton affiche du texte, une icône WhatsApp ou les deux. Les choix comprennent :<ul><li>`text_and_icon`</li><li>`text`</li><li>`icon`</li></ul> | `text_and_icon` | | `icon_position` | Choix | La position de l'icône sur le bouton. Les choix comprennent `left` et `right`. | `left` | | `button_text` | Chaîne | Le texte du bouton. | `Chat on WhatsApp` | | `whatsapp_icon_title` | Chaîne | Le texte de l'icône pour les lecteurs d'écran. | `WhatsApp Icon` | # Paramètre export_to_template_context Source: https://developers.hubspot.fr/docs/cms/reference/modules/export-to-template-context Export_to_template_context est un paramètre qui met les paramètres d'un module à disposition de l'environnement du modèle sans restituer réellement le module. Ce paramètre peut être utilisé avec toutes les balises de module HubL. La balise widget_data est utilisée pour récupérer ces paramètres, les stocker dans des variables et/ou les intégrer dans la logique de votre modèle. `export_to_template_context` est un paramètre qui met les paramètres d'une balise HubL à la disposition de l'environnement du modèle sans restituer réellement la balise HubL. Ce paramètre peut être utilisé avec toutes les [balises HubL](/docs/cms/reference/hubl/tags/standard-tags). Le dictionnaire `widget_data` est utilisé pour récupérer ces paramètres, les stocker dans des [variables](/docs/cms/reference/hubl/variables-macros-syntax) et/ou les intégrer dans la logique de votre modèle. En rendant les paramètres d'une balise HubL disponibles dans l'environnement du modèle sans restituer réellement la balise HubL, vous pouvez permettre aux utilisateurs de prendre des décisions dans l'éditeur de contenu qui affectent la restitution du modèle. Par exemple, supposons que vous voulez restituer un certain bloc de code uniquement lorsque l'utilisateur donne une valeur à un champ. Cela devient possible avec ce paramètre. Vous devez d'abord ajouter `export_to_template_context=True` à la balise HubL. Vous devez alors utiliser un paramètre `widget_data.module.parameter_you_want_to_retreive`. ```hubl theme={null} {% module "job_title" path="@hubspot/text", label="Enter a Job Title", value="Chief Morale Officer", export_to_template_context=True %} {# Makes the parameters available to be stored and used in template logic #} {{ widget_data.job_title.body.value }} {# Prints the value of the HubL tag but can also be used in template logic #} ``` Vous trouverez ci-dessous quelques applications de ce concept. ## Utilisation dans des modules personnalisés Le paramètre `export_to_template_context=True` n'est pas pris en charge dans les modules personnalisés, car il n'a pas d'utilité réelle pour eux. Vous n'avez pas besoin d'utiliser `export_to_template_context` pour obtenir la valeur d'un module dans un modèle, [car vous pouvez déjà y accéder](#retrieving-parameters-from-modules-already-rendered-on-the-template). Si vous devez masquer visuellement le résultat du module, vous pouvez créer le module pour qu'il ne produise rien ou inclure un champ booléen qui active ou désactive le rendu du module. ## Images d'arrière-plan sélectionnables par l'utilisateur Dans cet exemple, une balise HubL d'image est créée, mais elle est ensuite exportée vers le contexte du modèle plutôt que d'être restituée. Le paramètre `src` est récupéré avec la balise `widget_data` et restitué comme source d'une image d'arrière-plan dans une balise de style. ```hubl theme={null} {% module "background_image" path="@hubspot/image" label='Select a background image', src='http://cdn2.hubspot.net/hub/428357/file-2117441560-jpg/img/dev-bg-compressed.jpg', export_to_template_context=True %} <!--Sample markup --> <div class="bg-image-section" style="background:url('{{ widget_data.background_image.src }}'); background-size:cover; min-height: 500px;"> <h1>Supercharge your app with HubSpot</h1> <h3>Build powerful integrations for a global community of users</h3> </div> ``` Bien qu'il soit possible de le faire dans des modèles codés, il est généralement préférable de créer un module personnalisé afin d'offrir aux utilisateurs de l'éditeur de page la meilleure expérience possible. Les balises HubL comme celle-ci apparaissent comme des champs individuels, alors que vous pouvez avoir plusieurs champs associés. En utilisant un module personnalisé, tous ses champs s'affichent groupés dans l'éditeur de page. ## Champ de choix pour restituer le balisage prédéfini L'exemple suivant utilise le paramètre `export_to_template_context` en association avec un [module de choix](/docs/cms/reference/hubl/tags/standard-tags#choice) pour modifier un message de bannière sur une page Carrières. L'utilisateur sélectionne un département via l'interface utilisateur et l'intitulé change sans que l'utilisateur ait à modifier le contenu. ```hubl theme={null} {% module "department" path="@hubspot/choice", label="Choose department", value="Marketing", choices="Marketing, Sales, Dev, Services" export_to_template_context=True %} {% if widget_data.department.value == "Marketing" %} <h3>Want to join our amazing Marketing team?!</h3> <h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4> {% elif widget_data.department.value == "Sales" %} <h3>Are you a Sales superstar?</h3> <h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4> {% elif widget_data.department.value == "Dev" %} <h3>Do you love to ship code?</h3> <h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4> {% else %} <h3>Want to work with our awesome customers?</h3> <h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4> {% endif %} ``` Cette même fonctionnalité peut être reproduite en utilisant un champ de choix dans un module personnalisé. L'interface utilisateur du module personnalisé facilite le choix d'options comportant à la fois une valeur et un libellé. ## Récupération des paramètres à partir de modules déjà restitués sur le modèle Si vous souhaitez récupérer un paramètre d'un module ou d'une balise dont le rendu est déjà en cours sur une page, vous pouvez accéder au module dans un dictionnaire intitulé `widgets`. Le paramètre `export_to_template_context` n'est pas nécessaire. La syntaxe est la suivante : ```hubl theme={null} // HubL {{ content.widgets.name_of_module.body.parameter }} {{ content.widgets.my_text.body.value }} ``` > [!WARNING] > > ### Remarque: > > La méthode ci-dessus ne prend pas en charge la récupération de valeurs à partir de champs dans des modules globaux, car `content.widgets` n'accédera pas aux modules globaux. Étant donné que les différents champs stockent les données dans des formats différents, il est souvent pratique d'utiliser les [informations du développeur](/docs/cms/start-building/introduction/developer-environment/troubleshooting/troubleshooting#developer-info) pour savoir comment accéder aux données spécifiques que vous souhaitez afficher. ## Impression des informations du module HubL sur la liste des blogs Si les modèles de blog sont généralement utilisés pour les blogs, ils peuvent également être réutilisés pour créer divers autres types de listes. Vous pouvez utiliser les techniques décrites ci-dessus pour y parvenir. Par exemple, vous pouvez créer une liste de presse concernant votre entreprise, mais plutôt que de créer un lien vers les articles, vous souhaitez que la liste renvoie à une autre page. Vous pouvez voir ce concept en action sur [academy.hubspot.com/projects](https://academy.hubspot.com/projects). La page de liste des projets est un modèle de liste de blog, mais chaque article est lié à une page HubSpot ordinaire. Le créateur de contenu spécifie le lien de destination dans l'éditeur. Dans l'en-tête du code de l'article de blog individuel, vous devez définir un champ de texte. Si vous ne voulez pas que le texte soit restitué sur l'article, vous devez utiliser `export_to_template_context`. ```hubl theme={null} {% module "custom_blog_link" path="@hubspot/text", label="Link to external press item", export_to_template_context=True %} ``` Ce champ de texte est modifiable dans chaque article de blog. Ensuite, nous devons définir un lien dans notre liste. Toutefois, comme les données du widget n'existent que dans le contexte de l'article, nous devons utiliser une syntaxe différente pour récupérer les données du widget afin de renseigner le lien. Dans ce cas, nous utiliserons `content.widgets.custom_blog_link.body.value`. Bien que le champ `widget_data` ne soit pas accessible à la liste de blog, la valeur de ce champ est toujours stockée dans le contexte des widgets du contenu individuel. Une boucle basique de liste de blog qui restitue ce lien personnalisé avec chaque article est présentée ci-dessous. Si vous utilisez cette technique, veillez à ajouter le sous-répertoire créé automatiquement pour chaque article de blog à votre fichier robots.txt afin d'éviter que ces articles vides ne soient recherchés par Google et les autres robots d'exploration. ```hubl theme={null} {% for content in contents %} <a href="https://developers.hubspot.fr/docs{{ content.widgets.custom_blog_link.body.value }}"> Click here to see this press feature! </a> {% endfor %} ``` # Codage des modules personnalisés Source: https://developers.hubspot.fr/docs/cms/reference/modules/files Les modules personnalisés sont des composants réutilisables que vous pouvez utiliser sur votre site web. Créez-les en respectant les meilleures pratiques en matière de vitesse, d'expérience utilisateur et d'accessibilité. Lorsque vous créez un module pour des pages, des blogs et des [devis](/docs/cms/start-building/building-blocks/templates/quotes), le module contient trois fichiers d'interface connexes qui contrôlent le contenu, le style et la fonctionnalité du module : * module.html * module.css * module.js > [!NOTE] > > Les modules de messagerie ne prennent pas en charge module.css et module.js. En effet, les clients de messagerie ne prennent pas en charge JavaScript et la prise en charge des fichiers CSS associés est limitée. Ces fichiers seront toujours rendus sur la page lorsqu'une instance du module se trouve sur la page. Lorsqu'une page comprend plusieurs instances du même module, HubSpot ne chargera qu'une seule fois `module.css` et `module.js` de ce module. Par défaut, `module.css` et `module.js` ne se chargent pas de manière asynchrone, mais vous pouvez changer cela en incluant [css\_render\_options et js\_render\_options](/docs/cms/reference/modules/configuration) dans le meta.json du module. Les modules peuvent être construits dans le gestionnaire de conception ou localement en utilisant [HubSpot CLI](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli). Dans le gestionnaire de conception, les fichiers de modules sont affichés dans un éditeur à plusieurs volets. ![cms-dev-custom-module1](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/cms-dev-custom-module1.png) Lors de l'affichage d'un module en local, les fichiers sont contenus dans les dossiers module-name.module. ![cms-dev-custom-module0](https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/cms-dev-custom-module0.png) La décision d'utiliser le gestionnaire de conception ou le CLI pour créer et gérer les modules dépend des préférences de votre équipe. Voir la [création d'un workflow efficace pour les développeurs](/docs/cms/start-building/introduction/developer-environment/creating-an-efficient-development-workflow) pour des recommandations. ## HTML et HubL (module.html) Le fichier module.html est destiné au HTML et au HubL. En général, l'endroit où un module est placé dans l'éditeur de page ou le fichier de modèle détermine l'endroit où le contenu du fichier module.html est rendu. Ce fichier agit comme un [HubL](/docs/cms/reference/hubl/overview#including-files-in-files) dans la page où le module est placé. Le fichier module.html [peut accéder aux valeurs des champs du module via HubL](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview#using-module-field-data-to-render-html). ## CSS (module.css) Utilisez le fichier `module.css` pour ajouter de la CSS à un module. En général, `module.css` prend en charge un sous-ensemble très limité de HubL. Cependant, vous pouvez utiliser [`module_asset_url("my-image.png")`](/docs/cms/reference/hubl/functions#module-asset-url) pour les images ajoutées en tant que ressources associées à un module. Cela permet d'associer des ressources telles que des images, compilées avec le module lui-même. Par exemple : ```css theme={null} .testimonial-module__wrapper { background: url("{{ module_asset_url("bg-pattern.png") }}"); background-repeat: repeat; min-height: 200px; width: 100%; display: block; } ``` Découvrez ci-dessous comment configurer la CSS d'un module pour qu'elle change dynamiquement en fonction des champs du module. ### Stylisation basée sur les valeurs des champs du module Il existe plusieurs façons d'influencer le style de votre module en fonction des champs du module. Choisissez la méthode qui convient le mieux à votre cas d'utilisation spécifique. * [Classe CSS](#css-classes) * [Bloc Require\_css](#require-css-block) * [Styles intraligne](#inline-styles) #### Classe CSS Pour créer un style prédéfini pour le module avec la possibilité pour les éditeurs de choisir parmi ces options, vous pouvez ajouter un champ de module pour définir des classes dans votre fichier `module.html` qui correspondent aux classes CSS dans votre fichier `module.css`. Par exemple, vous pouvez avoir un module image et un module texte. Vous souhaitez que les créateurs de contenu puissent positionner l'image à droite ou à gauche du texte en fonction d'un champ de sélection. Pour ce faire, vous pouvez définir vos fichiers `module.html` et `module.css` comme suit : ```hubl theme={null} <!-- module.html --> <section class="img-text__wrapper img-text--{{ module.positioning }}" aria-label="{{ module.heading }}"> {# module.position is a choice field with two values "img-left" or "img-right". This dictates the order they appear on desktop. Controlled by CSS #} <div class="img-text__img"> <img src="{{ module.image.src }}" alt="{{ module.image.alt }}"> </div> <div class="img-text__text"> <h2> {% inline_text field="heading" value="{{ module.heading }}" %} </h2> {% inline_rich_text field="text" value="{{ module.text }}" %} </div> </section> ``` ```css theme={null} /* module.css */ /* CSS that makes the image show adjacent to the text, and positioned based on the positioning field.*/ /* The media query ensures that on mobile the image will always appear above the text for visual consistency. */ @media (min-width: 768px) { .img-text__wrapper { display: flex; align-items: row; } .img-text__img, .img-text__text { flex: 1; padding: 10px; } .img-text--img-right { flex-direction: row-reverse; } } ``` ### bloc require\_css Lorsque vous devez donner aux créateurs de contenu un contrôle direct sur des propriétés spécifiques et que les classes ne sont pas idéales, les balises de style avec blocs `require_css` sont la meilleure option. Pour donner aux créateurs de contenu un contrôle direct sur des propriétés spécifiques sans utiliser de classes, vous pouvez ajouter du style au fichier `module.html` dans les balises `require_css`. Par exemple : ```hubl theme={null} <div class="img__wrapper"> {% if module.image.src %} {% set sizeAttrs = 'width="{{ module.image.width }}" height="{{ module.image.height }}"' %} {% if module.image.size_type == 'auto' %} {% set sizeAttrs = 'style="max-width: 100%; height: auto;"' %} {% elif module.image.size_type == 'auto_custom_max' %} {% set sizeAttrs = 'width="100%" height="auto" style="max-width: {{ module.image.max_width }}px; max-height: {{ module.image.max_height }}px"' %} {% endif %} <img src="{{ module.image.src }}" alt="{{ module.image.alt }}" {{ sizeAttrs }}> {% endif %} </div> {% require_css %} <style> img { border-width:{{ module.border_width }}px; border-color:rgba({{ module.border_color.color|convert_rgb}},{{ module.border_color.opacity/100 }}); border-style: solid; } </style> {% end_require_css %} ``` Comme `module.html` peut rendre HubL, vous pouvez utiliser les valeurs des champs du module comme variables CSS. Lorsqu'un créateur de contenu met à jour le champ dans l'éditeur de page, la CSS est mise à jour en conséquence. Ces blocs déplacent les balises `<style>` dans le `<head>` de votre page, dans l'annonce `standard_header_includes`. Vous pouvez également configurer la CSS pour qu'elle ne s'applique qu'à l'instance du module en l'encadrant de balises `scope_css`. Par exemple, vous pouvez mettre à jour le code du module ci-dessus comme suit : ```hubl theme={null} <div class="img__wrapper"> {% if module.image.src %} {% set sizeAttrs = 'width="{{ module.image.width }}" height="{{ module.image.height }}"' %} {% if module.image.size_type == 'auto' %} {% set sizeAttrs = 'style="max-width: 100%; height: auto;"' %} {% elif module.image.size_type == 'auto_custom_max' %} {% set sizeAttrs = 'width="100%" height="auto" style="max-width: {{ module.image.max_width }}px; max-height: {{ module.image.max_height }}px"' %} {% endif %} <img src="{{ module.image.src }}" alt="{{ module.image.alt }}" {{ sizeAttrs }}> {% endif %} </div> {% require_css %} <style> {% scope_css %} img { border-width:{{ module.border_width }}px; border-color:rgba({{ module.border_color.color|convert_rgb}},{{ module.border_color.opacity/100 }}); border-style: solid; } {% end_scope_css %} </style> {% end_require_css %} ``` ### Ajouter un style intraligne Lorsque vous devez donner aux créateurs de contenu un contrôle poussé sur quelques propriétés seulement et que les classes ne sont pas idéales, vous pouvez ajouter directement les valeurs à un attribut de style dans le HTML. ```hubl theme={null} {# Module.html #} <div style="background: rgba({{ module.bg_color.color|convert_rgb }},{{ module.bg_color.opacity/100 }});"> {% inline_rich_text field="richtext" value="{{ module.richtext }}" %} </div> ``` Si vous avez de nombreuses propriétés et que le code devient difficile à lire, envisagez de passer à la méthode du bloc `require_css`. ### Importer des fichiers CSS spécifiques `require_css` est une fonction HubL que vous pouvez ajouter à module.html et qui indique à HubSpot qu'un module ou un modèle particulier nécessite un fichier CSS particulier pour s'afficher. Une balise de lien pointant vers le fichier css est ajoutée à `<head>` de la page, à l'intérieur de `standard_header_includes`. La fonction `require_css` ne chargera ce fichier CSS qu'une seule fois, quel que soit le nombre de fois où ce même fichier est requis par les modules et les modèles sur une page particulière. Il est donc idéal pour les situations où les styles peuvent être partagés entre plusieurs modules, mais où l'ajout de CSS directement dans les feuilles de style principales utilisées sur chaque page de votre site n'a pas de sens. `require_css` et les fichiers CSS associés remplissent le même objectif, mais `require_css` peut être utilisé de manière conditionnelle en fonction des valeurs des champs. Cela évite de charger du code inutile. ```hubl theme={null} <!-- module.html --> {{ require_css(get_asset_url("/modules/shared_layout_styles.css")) }} ``` ## JavaScript (module.js) Utilisez le fichier `module.js` pour ajouter du JavaScript à un module. Comme le fichier `module.css`, le fichier `module.js` ne prend pas en charge HubL. ### Script basé sur les valeurs des champs Il existe plusieurs façons de concevoir des modules, où JavaScript agit différemment en fonction des valeurs des champs. Comprendre quelle méthode utiliser et à quel moment peut se traduire par des gains de performance sur chaque page où le module est utilisé. Par exemple, vous avez un module d'image personnalisé et vous voulez donner aux créateurs de contenu la possibilité d'ouvrir l'image dans une galerie. Les créateurs de contenu veulent l'utiliser que pour des images spécifiques, et non pour toutes les instances du module. ### Attributs des données Les attributs de données sont des attributs personnalisés de la norme HTML 5 que les développeurs ajoutent aux éléments. De même que tous les éléments prennent en charge `class="yourClassName"`, tous les éléments prennent en charge `data-your-attribute="yourValue"`. ```hubl theme={null} <!-- module.html--> <div class="img-module img-module__wrapper" data-lightbox="{{ module.is_lightbox_enabled }}" data-caption="above"> <!-- module.is_lightbox_enabled is a boolean field, module.caption_position is a choice field. --> {% if module.image.src %} {% set sizeAttrs = 'width="{{ module.image.width }}" height="{{ module.image.height }}"' %} {% if module.image.size_type == 'auto' %} {% set sizeAttrs = 'style="max-width: 100%; height: auto;"' %} {% elif module.image.size_type == 'auto_custom_max' %} {% set sizeAttrs = 'width="100%" height="auto" style="max-width: {{ module.image.max_width }}px; max-height: {{ module.image.max_height }}px"' %} {% endif %} <img src="{{ module.image.src }}" alt="{{ module.image.alt }}" {{ sizeAttrs }}> {% endif %} </div> ``` Vous pouvez utiliser les attributs de données pour transmettre les valeurs des champs de vos instances de module qui seront traitées par votre fichier module.js. Pour utiliser les valeurs de votre fichier module.js, vous devrez parcourir en boucle toutes les instances de votre module. L'ajout d'un nom de classe spécifique au module à l'élément encadreur le plus externe de votre module vous donnera une cible à utiliser, afin que vous puissiez parcourir en boucle chacune de vos instances de module. ```js theme={null} // module.js let imgModules = document.getElementsByClassName("img-module"); Array.from(imgModules).forEach(function (element) { // loop through each of the instances of the module // set data attributes to variables to make it easy to work with let isLightboxEnabled = element.dataset.lightbox; let captionStyle = element.dataset.caption; if (isLightboxEnabled) { element.addEventListener("click", function () { showLightbox(captionStyle); // Execute your code for the action you want to take, you can pass your data attributes into functions from libraries. }); } }); ``` Les attributs de données vous permettront de récupérer les valeurs des champs pour chaque instance de module dans votre module.js. ### bloc require\_js Dans des situations avancées, par exemple lors de l'utilisation d'une bibliothèque de modèles JavaScript ou d'un cadre réactif comme Vue.js ou React.js, vous préférerez peut-être n'afficher que les données, et voir le cadre se charger du rendu. Dans ce cas, utilisez une balise script entourée d'un bloc [`require_js`](/docs/cms/reference/hubl/functions#require-js) pour fournir des variables auxquelles vous pouvez accéder à partir de votre script de modélisation. ```hubl theme={null} {% require_js %} <script> let myArray = [ {%- for item in module.repeating_text_field -%}"{{ item }}",{%- endfor -%} ]; </script> {% end_require_js %} ``` Cette technique peut être utile pour fournir aux applications avancées un ensemble initial de données à partir desquelles effectuer le rendu. Cela élimine un appel JavaScript initial pour récupérer les données. ### require\_js [`require_js`](/docs/cms/reference/hubl/functions#require-js) est une fonction HubL qui indique à HubSpot qu'un module ou un modèle particulier nécessite un fichier JavaScript particulier pour être chargé correctement. La fonction prend deux paramètres : le chemin d'accès au fichier et l'emplacement où le fichier doit être ajouté ("head" ou "footer"). Dans un module, `require_js` ne peut être ajouté que dans le module.html. Le fichier JavaScript mentionné dans l'annonce `require_js` ne sera chargé qu'une fois par page, quel que soit le nombre de fois où il est requis par les modules et les modèles de la page. Cela réduit le nombre de requêtes HTTP et évite la duplication du code. Certaines situations où cela devient pratique : * Si vous avez plusieurs modules ou modèles qui nécessitent le même JavaScript, vous pouvez utiliser `require_js` pour partager ce script entre les modules. * Si vous travaillez avec un pack JavaScript comme webpack, il peut être plus facile d'envoyer vos fichiers js à un emplacement spécifique. En utilisant `require_js`, vous pouvez associer JavaScript à votre module. `require_js` et les fichiers JavaScript associés servent le même objectif, mais `require_js` peut être fait de manière conditionnelle en fonction des valeurs des champs. Cela évite de charger du code inutile. Vous avez également la possibilité de charger JavaScript dans l'en-tête, si vous en avez besoin. > [!TIP] > > Puisque JavaScript bloque le rendu, l'emplacement par défaut [`require_js`](/docs/cms/reference/hubl/functions#require-js) pour JavaScript est le "footer". [En savoir plus sur l'optimisation des performances.](/docs/cms/best-practices/testing-staging-performance/speed) ## Informations associées * [Optimiser la vitesse de votre site CMS Hub](/docs/cms/best-practices/testing-staging-performance/speed) * [Modules](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview) * [Champs de module](https://developers.hubspot.fr/docs/guides/cms/content/fields/overview) # Using modules in templates Source: https://developers.hubspot.fr/docs/cms/reference/modules/using-modules-in-templates # Créer les bilans de santé Source: https://developers.hubspot.fr/docs/cms/reference/react/build-health-checks # Bibliothèque @hubspot/cms-components Source: https://developers.hubspot.fr/docs/cms/reference/react/cms-components-library # Îles Source: https://developers.hubspot.fr/docs/cms/reference/react/islands # JS Partials Source: https://developers.hubspot.fr/docs/cms/reference/react/js-partials # Développement local Source: https://developers.hubspot.fr/docs/cms/reference/react/local-development # Stylisation CMS React Source: https://developers.hubspot.fr/docs/cms/reference/react/styling # Test pour CMS React Source: https://developers.hubspot.fr/docs/cms/reference/react/testing # Référence des fonctions sans serveur (gestionnaire de conception) Source: https://developers.hubspot.fr/docs/cms/reference/serverless-functions/serverless-functions Profitez d'informations de référence pour fonctions sans serveur créées avec la gestionnaire de conception, notamment les serverless.json, les fichiers de fonction, les points de terminaison, les commandes d'ILC et la gestion des packages. > **Produits pris en charge** > [!WARNING] > > ### Remarque : > > Cette page contient des informations de référence pour les fonctions sans serveur créées à l'aide du gestionnaire de conception. Historiquement, il s'agit de la façon originale de créer des fonctions sans serveur pour vos pages CMS et elle est toujours prise en charge. Cependant, à l'avenir, il est recommandé de [créer et de déployer des fonctions sans serveur avec des projets développeur HubSpot](/docs/cms/start-building/features/serverless-functions/getting-started-with-serverless-functions). Les fonctions sans serveur basées sur des projets peuvent inclure des dépendances tierces et avoir un accès plus direct à l'authentification via des jetons d'accès d'application privée. Dans cet article, découvrez les fichiers contenus dans un [dossier `.functions` sans serveur](/docs/cms/start-building/features/serverless-functions/overview#serverless-function-folders) ainsi que les commandes d'ILC que vous pouvez utiliser avec les fonctions sans serveur. Pour un aperçu de haut niveau des fonctions sans serveur, consultez la [présentation des fonctions sans serveur](/docs/cms/start-building/features/serverless-functions/overview). Pour plus d'informations sur la création de fonctions sans serveur avec des projets pour les [modules et partials rendus JavaScript](https://github.hubspot.com/cms-js-building-block-examples/), consultez la [documentation relative aux projets de développement](https://developers.hubspot.fr/docs/cms/reference/serverless-functions/serverless-functions-in-projects). ## Serverless.json Dans le dossier `.functions`, le fichier `serverless.json` stocke la configuration de la fonction sans serveur. Ce fichier est obligatoire et mappe vos fonctions à leurs [points de terminaison](#endpoints). ```json theme={null} { "runtime": "nodejs20.x", "version": "1.0", "environment": { "globalConfigKey": "some-value" }, "secrets": ["secretName"], "endpoints": { "events": { "file": "function1.js", "method": "GET" }, "events/update": { "method": "POST", "file": "action2.js", "environment": { "CONFIG_KEY": "some-other-value" }, "secrets": ["googleKeyName", "otherkeyname"] } } } ``` | clé | Type | Description | | - | - | - | | `runtime` | Chaîne | L'environnement d'exécution. Prend en charge [Node.js](https://nodejs.org/en/about/) v20 (`nodejs20.x`). | | `version` | Chaîne | La version du schéma de la fonction sans serveur HubSpot. (Version actuelle 1.0) | | `environment` | Objet | Les variables de configuration transmises à la fonction d'exécution en tant que [variables d'environnement](https://nodejs.org/docs/latest-v10.x/api/process.html#process_process_env) au moment de l'exécution. Vous pouvez utiliser cela pour ajouter une logique permettant d'utiliser une version de test d'une API au lieu de la véritable API, en fonction d'une variable d'environnement. | | `secrets` | Tableau | Un tableau contenant les noms des [secrets](#secrets) que votre fonction sans serveur utilisera à des fins d'authentification. Ne stockez pas les secrets directement dans ce fichier. Indiquez seulement leurs noms. | | `endpoints` | Objet | Les points de terminaison définissent les chemins qui sont exposés et leur correspondance avec des fichiers JavaScript spécifiques dans votre dossier de fonctions. Découvrez-en davantage sur les [points de terminaison ci-dessous](#endpoints). | > [!NOTE] > > HubSpot [ne prendra plus en charge le nœud 18 au-delà du](https://developers.hubspot.com/changelog/deprecation-of-node-v18-in-all-serverless-functions-and-cli) 1er octobre 2025. Au-delà de cette date, les fonctions sans serveur dont le runtime est inférieur à v20 ne pourront plus être déployées.\\ > [!WARNING] > > ### Remarque : > > N'attribuez pas le même nom à vos secrets et à vos variables d'environnement. Cela entraînera des conflits lors du renvoi de leurs valeurs dans la fonction. ### Points de terminaison Chaque point de terminaison peut avoir ses propres [variables d'environnement](https://nodejs.org/docs/latest-v10.x/api/process.html#process_process_env) et secrets. Les variables spécifiées en dehors des points de terminaison doivent être utilisées pour les paramètres de configuration qui s'appliquent à toutes les fonctions et à tous les points de terminaison. ```json theme={null} "events/update": { "method": "POST", "file": "action2.js", "environment": { "configKey": "some-other-value" }, "secrets": ["googleAPIKeyName","otherKeyName"] } ``` | clé | Type | Description | | - | - | - | | `method` | Chaîne ou tableau de chaînes | [La ou les méthodes HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods) que le point de terminaison prend en charge. La valeur par défaut est [GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/GET). | | `file` | Chaîne | Le chemin d'accès au fichier de fonction JavaScript avec l'implémentation pour le point de terminaison. | Le point de terminaison peut être appelé en appelant une URL de l'un des domaines connectés au compte HubSpot, y compris les sous-domaines par défaut `.hs-sites.com`, avec la structure d'URL suivante : `https://{domainName}/_hcms/api/{endpoint-name/path}?portalid={hubId}`. | Paramètre | Description | | - | - | | `domainName` | Un domaine connecté au compte HubSpot. | | `/_hcms/api/` | Le chemin d'accès réservé aux fonctions sans serveur. Tous les points de terminaison se trouvent à l'intérieur de ce chemin. | | `endpoint-name/path` | Le nom ou le chemin d'accès du point de terminaison que vous avez spécifié dans le fichier `serverless.json`. | | `portalid` | Un paramètre de requête facultatif contenant votre ID de compte HubSpot. En fournissant ces informations dans la requête, vous pourrez tester vos fonctions dans les aperçus de modules et de modèles. | Par exemple, si `website.com` et `subdomain.brand.com` sont connectés au compte, vous pouvez appeler la fonction à l'aide de `https://website.com/_hcms/api/{endpoint-name/path}` ou `https://subdomain.brand.com/_hcms/api/{endpoint-name/path}`. ## Fichier de fonction Outre le fichier de configuration `serverless.json`, le dossier `.functions` contiendra également un fichier JavaScript [Node.js](https://nodejs.org/en/) qui définit la fonction. Vous pouvez également utiliser la bibliothèque de [requêtes](https://github.com/request/request#readme) pour effectuer une requête HTTP vers les [API de HubSpot](https://developers.hubspot.fr/docs/api-reference/overview) et d'autres API. Par exemple : ```js theme={null} // Require axios library, to make API requests. const axios = require("axios"); // Environment variables from your serverless.json // process.env.globalConfigKey exports.main = (context, sendResponse) => { // your code called when the function is executed // context.params // context.body // context.accountId // context.limits // secrets created using the CLI are available in the environment variables. // process.env.secretName //sendResponse is what you will send back to services hitting your serverless function. sendResponse({ body: { message: "my response" }, statusCode: 200 }); }; ``` ### Objet contextuel L'objet contextuel contient des informations contextuelles sur l'exécution de la fonction, stockées dans les paramètres suivants. | Paramètre | Description | | - | - | | `accountId` | L'ID du compte HubSpot contenant la fonction. | | `body` | Renseigné si la requête est envoyée en tant que `POST` avec un type de contenu `application/json`. | | `contact` | Si la requête provient d'un contact intégré dans des cookies, l'objet de contact sera renseigné avec un ensemble de propriétés de contact de base ainsi que les informations suivantes :<ul><li>`vid` : l'ID visiteur du contact.</li><li>`isLoggedIn` : lorsque vous utilisez le contrôle d'accès au CMS, la valeur sera définie sur `true` si le contact est connecté au domaine.</li><li>`listMemberships` : un tableau d'ID de listes de contacts dont ce contact est membre.</li></ul> | | `headers` | Contient les [en-têtes](#headers) envoyés par le client qui atteint votre point de terminaison. | | `params` | Renseigné avec les valeurs de la chaîne de requête ainsi que les valeurs HTML Form-POST. Celles-ci sont structurées comme une carte avec des chaînes de caractères comme clés et un tableau de chaînes de caractères pour chaque valeur.`context.params.yourvalue` | | `limits` | Renvoie le degré de rapprochement quant aux [limites associées aux fonctions sans serveur](/docs/cms/start-building/features/serverless-functions/overview#know-your-limits).<ul><li>`executionsRemaining` : le nombre d'exécutions par minute restantes.</li><li>`timeRemaining` : le temps d'exécution autorisé restant.</li></ul> | ### En-têtes Si vous avez besoin de connaître les en-têtes du client qui atteint votre point de terminaison, vous pouvez y accéder via `context.headers`, de la même manière que vous accéderiez aux informations via `context.body`. Vous trouverez ci-dessous certains des en-têtes courants fournis par HubSpot. Pour obtenir la liste complète, consultez la [documentation des en-têtes HTTP de MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers). | en-tête | Description | | - | - | | `accept` | Indique quels types de contenu, exprimés en [types MIME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types), le client comprend. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept). | | `accept-encoding` | Communique le codage du contenu que le client comprend. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Encoding). | | `accept-language` | Indique la langue et les paramètres régionaux préférés. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Language). | | `cache-control` | Contient des directives pour la mise en cache. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control). | | `connection` | Indique si la connexion réseau reste ouverte. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Connection). | | `cookie` | Contient les cookies envoyés par le client. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cookie). | | `host` | Communique le nom de domaine et le numéro de port TCP d'un serveur en écoute. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Host). | | `true-client-ip` | Adresse IP de l'utilisateur final. [Consultez Cloudflare true-client-ip](https://developers.cloudflare.com/network/true-client-ip-header/). | | `upgrade-insecure-requests` | Communique la préférence du client pour une réponse chiffrée et authentifiée. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Upgrade-Insecure-Requests). | | `user-agent` | Chaîne définie par le fournisseur identifiant l'application, le système d'exploitation, le fournisseur de l'application et la version. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent). | | `x-forwarded-for` | Identifie l'adresse IP d'origine d'un client via un proxy ou un équilibreur de charge. [Voir MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For). | #### Rediriger en envoyant un en-tête Vous pouvez effectuer une redirection depuis votre fonction sans serveur en envoyant une réponse avec un en-tête de *localisation* et un statusCode `301`. ```js theme={null} sendResponse({ statusCode: 301, headers: { Location: "https://www.example.com", }, }); ``` ### Définir des cookies à partir de votre point de terminaison Depuis votre fonction sans serveur, vous pouvez indiquer au client (navigateur web) de définir un cookie. ```js theme={null} exports.main = (context, sendResponse) => { sendResponse({ body: { ... }, 'Set-Cookie': 'myCookie1=12345; expires=...; Max-Age=...', statusCode: 200 }); } ``` ### Définir plusieurs valeurs pour un seul en-tête Pour les en-têtes qui prennent en charge plusieurs valeurs, vous pouvez utiliser `multiValueHeaders` pour transmettre les valeurs. Par exemple, vous pouvez demander au navigateur d'installer plusieurs cookies. ```js theme={null} exports.main = (context, sendResponse) => { sendResponse({ body: { ... }, multiValueHeaders: { 'Set-Cookie': [ 'myCookie1=12345; expires=...; Max-Age=...', 'myCookie2=56789; expires=...; Max-Age=...' ] }, statusCode: 200 }); } ``` ## Secrets Lorsque vous devez authentifier une requête de fonction sans serveur, vous utiliserez des secrets pour stocker des valeurs telles que des clés d'API ou des jetons d'accès à des applications privées. À l'aide de l'ILC, vous pouvez ajouter des secrets à votre compte HubSpot pour stocker ces valeurs, auxquelles vous pourrez accéder ultérieurement via des variables d'environnement (`process.env.secretName`). Les secrets sont gérés via l'ILC de HubSpot à l'aide des commandes suivantes : * [`hs secrets list`](/docs/developer-tooling/local-development/hubspot-cli/reference#list-secrets) * [`hs secrets add`](/docs/developer-tooling/local-development/hubspot-cli/reference#add-a-secret) * [`hs secrets delete`](/docs/developer-tooling/local-development/hubspot-cli/reference#remove-a-secret) Une fois ajoutés par le biais de l'ILC, les secrets peuvent être disponibles pour des fonctions en incluant un tableau de `secrets` contenant le nom du secret. Cela vous permet de stocker votre code de fonction dans le système de [contrôle de version](/docs/cms/start-building/introduction/developer-environment/github-integration) et d'utiliser des secrets sans les diffuser. Cependant, vous ne devez jamais renvoyer la valeur de votre secret par le biais du journal de la console ou comme réponse, sous peine de diffuser le secret dans les journaux ou dans les interfaces qui exécutent votre fonction sans serveur. > [!WARNING] > > ### Remarque : > > En raison de la mise en cache, il peut s'écouler environ une minute pour que les valeurs secrètes se mettent à jour. Si vous venez de mettre à jour un secret mais que vous voyez toujours l'ancienne valeur, vérifiez à nouveau au bout d'une minute environ. ## Utilisation de fonctions sans serveur avec l'élément de formulaire Lors de la soumission des fonctions sans serveur, utilisez JavaScript pour gérer la soumission du formulaire et utilisez l'en-tête `"contentType" : "application/json"` dans votre requête. N'utilisez pas l'attribut `action` des éléments `<form>`. ## CORS [**Le partage des ressources entre origines multiples (CORS)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS) est une fonction de sécurité du navigateur. Par défaut, les navigateurs limitent les requêtes d'origines multiples initiées par JavaScript. Cela permet d'éviter qu'un code malveillant exécuté sur un autre domaine n'affecte votre site. Il s'agit de la règle d'origine unique. Comme l'envoi et la récupération de données à partir d'autres serveurs sont parfois nécessaires, le serveur externe peut fournir des en-têtes HTTP qui indiquent les origines autorisées à lire les informations dans un navigateur. Vous ne devriez pas rencontrer de problèmes CORS en appelant votre fonction sans serveur dans vos pages hébergées par HubSpot. Si c'est le cas, vérifiez que vous utilisez le bon protocole. > [!NOTE] > > **Vous rencontrez cette erreur CORS ?** *« Access to fetch at \[your function url] from origin \[page making request] has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. »* > > **Votre requête a-t-elle une origine différente de celle du site qui l'appelle ?** > > * Si le nom de domaine est différent, oui. > * Si vous utilisez un protocole différent (http, https), oui. > > Si vous utilisez un protocole différent, il suffit de modifier le protocole en conséquence et le problème sera résolu. > > Pour l'instant, vous ne pouvez pas modifier l'en-tête `Access-Control-Allow-Origin` de HubSpot. > > [Voir MDN pour obtenir des informations plus détaillées sur la résolution des erreurs CORS.](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS/Errors) ### Requêtes GET Les requêtes GET peuvent effectuer des [requêtes CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS) selon le client. Les requêtes [GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/GET) n'écrivent rien, elles ne font que renvoyer des données. ## Packs préchargés Les fonctions sans serveur de HubSpot sont actuellement préchargées avec les packs suivants : * [@hubspot/api-client](https://www.npmjs.com/package/@hubspot/api-client) : ^1.0.0-beta * [axios](https://www.npmjs.com/package/axios) : ^0.19.2 * [request](https://www.npmjs.com/package/request) : ^2.88.0 * [requests](https://www.npmjs.com/package/requests) : ^0.2.2 Pour utiliser la dernière version prise en charge d'un pack préchargé ou pour utiliser un pack nouvellement ajouté : 1. Clonez ou copiez votre fichier de fonction. 2. Modifiez le point de terminaison de votre fonction dans le fichier `serverless.json` pour qu'il pointe vers votre nouveau fichier de fonction. Vous pouvez supprimer l'ancienne version en toute sécurité. Si vous souhaitez inclure des packs en dehors de l'ensemble de packs préchargés, vous pouvez utiliser [webpack](https://webpack.js.org/) pour combiner vos modules de nœud et faire en sorte que vos fichiers groupés soient vos fichiers de fonction. ## Limites d'utilisation Les fonctions sans serveur sont destinées à être rapides avec un objectif restreint. Pour permettre des appels et des réponses rapides, les fonctions sans serveur de HubSpot sont soumises aux limites suivantes : * 50 secrets par compte * 128 Mo de mémoire. * Pas plus de 100 points de terminaison par compte HubSpot. * `contentType` `application/json` Doit être utilisé lors de l'appel d'une fonction. * Les journaux des fonctions sans serveur sont conservés pendant 90 jours. * 6 Mo sur une charge utile d'invocation AWS Lambda. **Limites d'exécution** * Chaque fonction a un temps d'exécution maximum de 10 secondes. * Chaque compte est limité à 600 secondes d'exécution totale par minute. Cela signifie que l'une ou l'autre de ces situations peut se produire : * 60 exécutions de fonctions qui prennent chacune 10 secondes. * 6 000 exécutions de fonctions qui prennent 100 millisecondes. Les fonctions qui dépassent ces limites de temps envoient un message d'erreur. Le nombre d'exécutions et les limites de temps renverront une réponse `429`. Le temps d'exécution de chaque fonction est inclus dans les [journaux des fonctions sans serveur](/docs/developer-tooling/local-development/hubspot-cli/reference#get-logs). Pour éviter d'atteindre ces limites, les données relatives aux limites sont fournies automatiquement selon le [contexte de la fonction](https://developers.hubspot.fr/docs/cms/reference/serverless-functions/serverless-functions-in-projects#function-file) pendant l'exécution. Vous pouvez vous en servir pour influencer votre demande afin de respecter ces limites. Par exemple, si votre application exige que votre point de terminaison soit interrogé, vous pouvez renvoyer avec vos données une variable pour influencer la fréquence de l'interrogation. Ainsi, lorsque le trafic est élevé, vous pouvez ralentir le taux d'interrogation pour éviter de dépasser les limites, puis le réaugmenter lorsque le trafic est faible. # Référence relative aux fonctions sans serveur Source: https://developers.hubspot.fr/docs/cms/reference/serverless-functions/serverless-functions-in-projects Profitez d'informations de référence pour votre serverless.json, vos fichiers de fonction, vos points de terminaison, vos commandes d'ILC et la gestion des packs, le tout au même endroit. > **Produits pris en charge** > [!WARNING] > > ### Remarque: > > Si vous créez une fonction sans serveur dans le cadre d'un [projet de développement](https://developers.hubspot.fr/docs/guides/crm/intro/create-a-project), consultez plutôt la [documentation relative aux fonctions sans serveur dans les projets de développement](https://developers.hubspot.fr/docs/guides/crm/private-apps/serverless-functions). La documentation ci-dessous concerne la création de fonctions sans serveur en dehors de la plate-forme de projets de développement. Dans cet article, découvrez les fichiers contenus dans un [dossier `.functions` sans serveur](/docs/cms/reference/serverless-functions/serverless-functions-in-projects#file-structure) ainsi que les commandes d'ILC que vous pouvez utiliser avec les fonctions sans serveur. Pour un aperçu de haut niveau des fonctions sans serveur, consultez la [présentation des fonctions sans serveur](/docs/cms/start-building/features/serverless-functions/overview). Pour plus d'informations sur la création de fonctions sans serveur avec des projets pour les [modules et partials rendus JavaScript](https://github.hubspot.com/cms-js-building-block-examples/), consultez la [documentation relative aux projets de développement](https://developers.hubspot.fr/docs/guides/crm/private-apps/serverless-functions). ## Serverless.json Dans le [dossier `.functions`](/docs/cms/reference/serverless-functions/serverless-functions-in-projects#file-structure), le fichier `serverless.json` stocke la configuration de la fonction sans serveur. Ce fichier est obligatoire et mappe vos fonctions à leurs [points de terminaison](#endpoints). ```json theme={null} // serverless.json { "runtime": "nodejs18.x", "version": "1.0", "environment": { "globalConfigKey": "some-value" }, "secrets": ["secretName"], "endpoints": { "events": { "file": "function1.js", "method": "GET" }, "events/update": { "method": "POST", "file": "action2.js", "environment": { "CONFIG_KEY": "some-other-value" }, "secrets": ["googleKeyName", "otherkeyname"] } } } ``` | clé | Type | Description | | - | - | - | | `runtime` | Chaîne | L'environnement d'exécution. Prend en charge les versions de [Node.js](https://nodejs.org/en/about/) suivantes :<ul><li>Node 20 (`nodejs20.x`) (recommandé)</li><li>Node 18 (`nodejs18.x`)</li></ul>Notez que HubSpot [ne prendra plus en charge le Node 16](https://developers.hubspot.com/changelog/deprecation-of-node-v16-in-all-serverless-functions) après le 12 juillet 2024. | | `version` | Chaîne | Version du schéma de la fonction sans serveur HubSpot. (Version actuelle 1.0) | | `environment` | Objet | Variables de configuration transmises à la fonction d'exécution en tant que [variables d'environnement](https://nodejs.org/docs/latest-v10.x/api/process.html#process_process_env) au moment de l'exécution. Vous pouvez utiliser cela pour ajouter une logique permettant d'utiliser une version de test d'une API au lieu de la véritable API, en fonction d'une variable d'environnement. | | `secrets` | Tableau | Un tableau contenant les noms des secrets que votre fonction sans serveur utilisera à des fins d'authentification. Ne stockez pas les secrets directement dans ce fichier. Indiquez seulement leurs noms. | | `endpoints` | Objet | Les points de terminaison définissent les chemins qui sont exposés et leur correspondance avec des fichiers JavaScript spécifiques dans votre dossier de fonctions. Découvrez-en davantage sur les points de terminaison ci-dessous. | > [!WARNING] > > ### Remarque: > > N'attribuez pas le même nom à vos secrets et à vos variables d'environnement. Cela entraînera des conflits lors du renvoi de leurs valeurs dans la fonction. ### Points de terminaison Chaque point de terminaison peut avoir ses propres [variables d'environnement](https://nodejs.org/docs/latest-v10.x/api/process.html#process_process_env) et secrets. Les variables spécifiées en dehors des points de terminaison doivent être utilisées pour les paramètres de configuration qui s'appliquent à toutes les fonctions et à tous les points de terminaison. ```json theme={null} "events/update": { "method": "POST", "file": "action2.js", "environment": { "configKey": "some-other-value" }, "secrets": ["googleAPIKeyName","otherKeyName"] } ``` Les points de terminaison ont deux clés uniques. | clé | Type | Description | | - | - | - | | `method` | Chaîne ou tableau de chaînes | [La ou les méthodes HTTP](https://developer.mozilla.org/fr/docs/Web/HTTP/Methods) que le point de terminaison prend en charge. La valeur par défaut est [GET](https://developer.mozilla.org/fr/docs/Web/HTTP/Methods/GET). | | `file` | Chaîne | Chemin d'accès au fichier de fonction JavaScript avec l'implémentation pour le point de terminaison. | Les fonctions sans serveur sont exposées via un chemin d'accès au domaine de votre compte CMS Hub. Cela inclut les sous-domaines `.hs-sites.com` par défaut. Vous pouvez accéder à ces fonctions à l'URL suivante : `https://{domainName}/_hcms/api/{endpoint-name/path}?portalid={hubId}`. Ci-dessous, découvrez chaque composant de l'URL : | Parameter | Description | | - | - | | `domainName` | Le nom de votre domaine. | | `/_hcms/api/` | Le chemin d'accès réservé aux fonctions sans serveur. Tous les points de terminaison se trouvent à l'intérieur de ce chemin. | | `endpoint-name/path` | Le nom ou le chemin d'accès du point de terminaison que vous avez spécifié dans le fichier `serverless.json`. | | `hubId` | Votre HubID. En fournissant ces informations dans la demande, vous pourrez tester vos fonctions dans les aperçus de modules et de modèles. | ## Fichier de fonction Outre le fichier de configuration `serverless.json`, le dossier `.functions` contiendra également un fichier JavaScript [Node.js](https://nodejs.org/en/) qui définit la fonction. Vous pouvez également utiliser la bibliothèque de [requêtes](https://github.com/request/request#readme) pour effectuer une requête HTTP vers les [API de HubSpot](https://developers.hubspot.fr/docs/reference/api/overview) et d'autres API. Par exemple : ```js theme={null} // Require axios library, to make API requests. const axios = require("axios"); // Environment variables from your serverless.json // process.env.globalConfigKey exports.main = (context, sendResponse) => { // your code called when the function is executed // context.params // context.body // context.accountId // context.limits // secrets created using the CLI are available in the environment variables. // process.env.secretName //sendResponse is what you will send back to services hitting your serverless function. sendResponse({ body: { message: "my response" }, statusCode: 200 }); }; ``` ### Objet contextuel L'objet contextuel contient des informations contextuelles sur l'exécution de la fonction, stockées dans les paramètres suivants. | Parameter | Description | | - | - | | `accountId` | L'ID du compte HubSpot contenant la fonction. | | `body` | Si la demande est envoyée comme une demande `POST` avec du contenu de type `application/json`. | | `contact` | Si la demande provient d'un contact intégré dans des cookies, l'objet de contact sera renseigné avec un ensemble de propriétés de contact de base, ainsi que les informations suivantes :<ul><li>`vid` : l'ID visiteur du contact.</li><li>`isLoggedIn` : lorsque vous utilisez le contrôle de l'accès au CMS, la valeur sera `true` si le contact est connecté au domaine.</li><li>`listMemberships` : un tableau d'ID de listes de contacts dont le contact est membre.</li></ul> | | `headers` | Contient les [en-têtes](#headers) envoyés par le client qui atteint votre point de terminaison. | | `params` | Renseigné avec les valeurs de la chaîne de requête ainsi que les valeurs HTML Form-POST. Celles-ci sont structurées comme une carte avec des chaînes de caractères comme clés et un tableau de chaînes de caractères pour chaque valeur.`context.params.yourvalue` | | `limits` | Renvoie le degré de rapprochement quant aux [limites associées aux fonctions sans serveur](/docs/cms/reference/serverless-functions/serverless-functions-in-projects#limits).<ul><li>`executionsRemaining` : nombre d'exécutions par minute restantes.</li><li>`timeRemaining` : temps d'exécution autorisé restant.</li></ul> | ### En-têtes Si vous avez besoin de connaître les en-têtes du client qui atteint votre point de terminaison, vous pouvez y accéder via `context.headers`, de la même manière que vous accéderiez aux informations via `context.body`. Vous trouverez ci-dessous certains des en-têtes courants fournis par HubSpot. Pour obtenir la liste complète, consultez la [documentation des en-têtes HTTP de MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers). | En-tête | Description | | - | - | | `accept` | Indique quels types de contenu, exprimés en [types MIME](https://developer.mozilla.org/fr/docs/Web/HTTP/MIME_types), le client comprend.[Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `accept-encoding` | Communique le codage du contenu que le client comprend. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `accept-language` | Indique la langue et les paramètres régionaux préférés. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `cache-control` | Contient des directives pour la mise en cache. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `connection` | Indique si la connexion réseau reste ouverte. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `cookie` | Contient les cookies envoyés par le client. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `host` | Communique le nom de domaine et le numéro de port TCP d'un serveur en écoute. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `true-client-ip` | Adresse IP de l'utilisateur final. [Consultez Cloudflare true-client-ip](https://developers.cloudflare.com/network/true-client-ip-header/). | | `upgrade-insecure-requests` | Communique la préférence du client pour une réponse chiffrée et authentifiée. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `user-agent` | Chaîne définie par le fournisseur identifiant l'application, le système d'exploitation, le fournisseur de l'application et la version. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | | `x-forwarded-for` | Identifie l'adresse IP d'origine d'un client via un proxy ou un équilibreur de charge. [Consultez MDN](https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept). | #### Rediriger en envoyant un en-tête Vous pouvez effectuer une redirection depuis votre fonction sans serveur en envoyant une réponse avec un en-tête de *localisation* et un code de statut `301`. ```js theme={null} sendResponse({ statusCode: 301, headers: { Location: "https://www.example.com", }, }); ``` ### Définir des cookies à partir de votre point de terminaison Depuis votre fonction sans serveur, vous pouvez indiquer au client (navigateur web) de définir un cookie. ```js theme={null} exports.main = (context, sendResponse) => { sendResponse({ body: { ... }, 'Set-Cookie': 'myCookie1=12345; expires=...; Max-Age=...', statusCode: 200 }); } ``` ### Définir plusieurs valeurs pour un seul en-tête Pour les en-têtes qui prennent en charge plusieurs valeurs, vous pouvez utiliser `multiValueHeaders` pour transmettre les valeurs. Par exemple, vous pouvez demander au navigateur d'installer plusieurs cookies. ```js theme={null} exports.main = (context, sendResponse) => { sendResponse({ body: { ... }, multiValueHeaders: { 'Set-Cookie': [ 'myCookie1=12345; expires=...; Max-Age=...', 'myCookie2=56789; expires=...; Max-Age=...' ] }, statusCode: 200 }); } ``` ## Secrets Lorsque vous devez authentifier une demande de fonction sans serveur, vous utiliserez des secrets pour stocker des valeurs telles que des clés d'API ou des jetons d'accès à des applications privées. À l'aide de la CLI, vous pouvez ajouter des secrets à votre compte HubSpot pour stocker ces valeurs, auxquelles vous pourrez accéder ultérieurement via des variables d'environnement (`process.env.secretName`). Les secrets sont gérés via l'ILC de HubSpot à l'aide des commandes suivantes : * [`hs secrets list`](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#list-secrets) * [`hs secrets add`](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#add-secret) * [`hs secrets delete`](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#remove-secret) Une fois ajoutés par le biais de la CLI, les secrets peuvent être disponibles pour des fonctions en incluant un tableau de `secrets` contenant le nom du secret. Cela vous permet de stocker votre code de fonction dans le système de [contrôle de version](/docs/cms/start-building/introduction/developer-environment/github-integration) et d'utiliser des secrets sans les diffuser. Cependant, vous ne devez jamais renvoyer la valeur de votre secret par le biais du journal de la console ou comme réponse, sous peine de diffuser le secret dans les journaux ou dans les interfaces qui exécutent votre fonction sans serveur. > [!WARNING] > > ### Remarque: > > En raison de la mise en cache, il peut s'écouler environ une minute pour que les valeurs secrètes se mettent à jour. Si vous venez de mettre à jour un secret mais que vous voyez toujours l'ancienne valeur, vérifiez à nouveau au bout d'une minute environ. ## Utilisation de fonctions sans serveur avec l'élément de formulaire Lors de la soumission des fonctions sans serveur, utilisez JavaScript pour gérer la soumission du formulaire et utilisez l'en-tête `"contentType" : "application/json"` dans votre requête. N'utilisez pas l'attribut `action` des éléments `<form>`. ## CORS [**Le partage des ressources entre origines multiples (CORS)**](https://developer.mozilla.org/fr/docs/Web/HTTP/CORS) est une fonction de sécurité du navigateur. Par défaut, les navigateurs limitent les demandes d'origines multiples initiées par JavaScript. Cela permet d'éviter qu'un code malveillant exécuté sur un autre domaine n'affecte votre site. Il s'agit de la règle d'origine unique. Comme l'envoi et la récupération de données à partir d'autres serveurs sont parfois nécessaires, le serveur externe peut fournir des en-têtes HTTP qui indiquent les origines autorisées à lire les informations dans un navigateur. Vous ne devriez pas rencontrer de problèmes CORS en appelant votre fonction sans serveur dans vos pages hébergées par HubSpot. Si c'est le cas, vérifiez que vous utilisez le bon protocole. > [!NOTE] > > **Vous rencontrez cette erreur CORS ?** > > *"Access to fetch at \[your function url] from origin \[page making request] has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled."* > > **Votre demande a-t-elle une origine différente de celle du site qui l'appelle ?** > > * Si le nom de domaine est différent, oui. > * Si vous utilisez un protocole différent (http, https), oui. > > Si vous utilisez un protocole différent, il suffit de modifier le protocole en conséquence et le problème sera résolu. > > Pour l'instant, vous ne pouvez pas modifier l'en-tête `Access-Control-Allow-Origin` de HubSpot. > > [Consultez MDN pour obtenir des informations plus détaillées sur la résolution des erreurs CORS.](https://developer.mozilla.org/fr/docs/Web/HTTP/CORS/Errors) ### Demandes GET Les demandes GET peuvent effectuer des [demandes CORS](https://developer.mozilla.org/fr/docs/Web/HTTP/CORS) selon le client. Les requêtes [GET](https://developer.mozilla.org/fr/docs/Web/HTTP/Methods/GET) n'écrivent rien, elles ne font que renvoyer des données. ## Packs préchargés Les fonctions sans serveur de HubSpot sont actuellement préchargées avec les packs suivants : * [@hubspot/api-client](https://www.npmjs.com/package/@hubspot/api-client) : ^1.0.0-beta * [axios](https://www.npmjs.com/package/axios) : ^0.19.2 * [request](https://www.npmjs.com/package/request) : ^2.88.0 * [requests](https://www.npmjs.com/package/requests) : ^0.2.2 Pour utiliser la dernière version prise en charge d'un pack préchargé ou pour utiliser un pack nouvellement ajouté : 1. Clonez ou copiez votre fichier de fonction. 2. Modifiez le point de terminaison de votre fonction dans le fichier `serverless.json` pour qu'il pointe vers votre nouveau fichier de fonction. Vous pouvez supprimer l'ancienne version en toute sécurité. Si vous souhaitez inclure des packs en dehors de l'ensemble de packs préchargés, vous pouvez utiliser [webpack](https://webpack.js.org/) pour combiner vos modules de nœud et faire en sorte que vos fichiers groupés soient vos fichiers de fonction. ## Limites d'utilisation Les fonctions sans serveur sont destinées à être rapides avec un objectif restreint. Pour permettre des appels et des réponses rapides, les fonctions sans serveur de HubSpot sont soumises aux limites suivantes : * 50 secrets par compte. * 128 Mo de mémoire. * Pas plus de 100 points de terminaison par compte HubSpot. * Du `contenu de type` `application/json` doit être utilisé lors de l'appel d'une fonction. * Les journaux des fonctions sans serveur sont conservés pendant 90 jours. * 6 Mo sur une charge utile d'invocation AWS Lambda. **Limites d'exécution** * Chaque fonction a un temps d'exécution maximum de 10 secondes. * Chaque compte est limité à 600 secondes d'exécution totale par minute. Cela signifie que l'une ou l'autre de ces situations peut se produire : * 60 exécutions de fonctions qui prennent chacune 10 secondes à être terminées. * 6 000 exécutions de fonctions qui prennent 100 millisecondes à être terminées. Les fonctions qui dépassent ces limites de temps envoient un message d'erreur. Le nombre d'exécutions et les limites de temps renverront une réponse `429`. Le temps d'exécution de chaque fonction est inclus dans les [journaux des fonctions sans serveur](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#logs). Pour éviter d'atteindre ces limites, les données relatives aux limites sont fournies automatiquement selon le [contexte de la fonction](https://developers.hubspot.fr/docs/reference/cms/serverless-functions#function-file) pendant l'exécution. Vous pouvez vous en servir pour influencer votre demande afin de respecter ces limites. Par exemple, si votre application exige que votre point de terminaison soit interrogé, vous pouvez renvoyer avec vos données une variable pour influencer la fréquence de l'interrogation. Ainsi, lorsque le trafic est élevé, vous pouvez ralentir le taux d'interrogation pour éviter de dépasser les limites, puis le réaugmenter lorsque le trafic est faible. # Spécifier des zones de glisser-déposer dans un modèle d'e-mail personnalisé Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/drag-and-drop/custom-email-template Découvrez comment spécifier des zones de glisser-déposer dans un modèle d'e-mail personnalisé. > **Produits pris en charge** Les [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) permettent aux développeurs de créer des sections de modèles d'e-mails personnalisés qui prennent en charge les modifications de mise en page, de style et de contenu directement dans l'éditeur d'e-mail. Cela permet aux développeurs de créer moins de modèles avec une structure globale, qui permettent aux créateurs de contenu de créer une multitude de pages avec des objectifs et des mises en page différents. > [!WARNING] > > **Remarque :** les modèles d'e-mails personnalisés peuvent uniquement contenir une zone de glisser-déposer. **1. Créer un nouveau modèle HTML** Créez un nouveau modèle HTML pour inclure le code HubL et HTML qui constitueront votre section de glisser-déposer : * Dans votre compte HubSpot, accédez à **Contenu** > **Gestionnaire de conception**. * Dans la barre latérale de gauche, créez un nouveau fichier en cliquant sur **Fichier** > **Nouveau fichier**. * Dans la boîte de dialogue, cliquez sur le menu déroulant **Que souhaiteriez-vous créer aujourd'hui ?** et sélectionnez **HTML et HUBL**. * Cliquez sur **Suivant**. * Cliquez sur le menu déroulant **Type de modèle**, puis sélectionnez **E-mail**. * Saisissez un **nom** pour le modèle. * Pour mettre à jour l'emplacement du modèle, cliquez sur **Modifier** sous *Emplacement du fichier*, puis sélectionnez un nouveau dossier dans lequel le modèle sera créé. * Cliquez sur **Créer**. **2. Ajouter des balises HubL à l** Vérifiez les balises obligatoires et facultatives suivantes que vous pouvez inclure dans la section `<head>` de votre modèle d'e-mail à des fins de style et de compatibilité : ### Balise requise `{{ dnd_area_stylesheet }}` Cette balise fournira les éléments suivants : * Ajout des requêtes média associées * Correction des problèmes de style connus dans Outlook * Réinitialisation des marges et des remplissages * Activation de l'anticrénelage * Ajout de CSS ### Balises facultatives Pour garantir une restitution cohérente de votre modèle sur tous les principaux clients de messagerie, vous pouvez également inclure les balises HubL facultatives suivantes à votre modèle : * `{{ email_header_includes }}` : cette balise injecte du CSS dans votre modèle afin d'assurer un rendu cohérent du style, de résoudre les problèmes de style les plus courants et d'ajouter des métadonnées au code HTML de l'e-mail. Lors de l'analyse de cette balise HubL, le contenu suivant sera ajouté dans le `<head>` du code HTML de l'e-mail : | Paramètre | Description | | - | - | | `<meta name="x-apple-disable-message-reformatting">` | Empêche iOS 11 de mettre automatiquement à l'échelle les e-mails. | | `<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">` | Informe les navigateurs et les clients de messagerie de la manière dont vous attendez d'eux qu'ils interprètent les différents caractères. | | `<meta http-equiv="X-UA-Compatible" content="IE=edge">` | Active CSS3 et les requêtes média sur Windows Phone 7,5, informe Internet Explorer d'afficher le contenu dans le mode le plus élevé possible et permet au navigateur de choisir la version d'Internet Explorer avec laquelle l'e-mail doit être restitué. | | `<meta name="viewport" content="width=device-width, initial-scale=1.0"/>` | Définit la zone visibles sur la largeur de l'écran de l'appareil, ce qui permet de rendre votre e-mail adaptable. | * `{{ reset_css_stylesheet }}` : l'utilisation de cette balise corrige plusieurs problèmes de style dans Outlook, et réinitialise également les marges et les remplissages de votre e-mail. * `{{ outlook_background_snippet }}` : cette balise définit l'image ou la couleur d'arrière-plan dans Outlook, à condition que vous ayez spécifié une règle CSS d'arrière-plan associée. **3. Créer une zone de glisser-déposer** Après avoir ajouté la balise HubL `{{ dnd_area_stylesheet }}` et toute autre balise facultative à la balise `<head>` de votre modèle, vous pouvez configurer une zone `dnd_area` dans le corps du modèle. ### Créer une zone de glisser-déposer vide Un élément `dnd_area` est un conteneur qui rend une partie de la page web modifiable en termes de structure, de conception et de contenu. Le corps d'une balise `dnd_area` fournit le contenu par défaut de la zone de glisser-déposer. La zone de glisser-déposer peut être entourée de `<div>` ou de `<table>`. L'une des contraintes de la zone de glisser-déposer est que la largeur minimale est fixée à 624 pixels et que cette valeur ne peut pas être modifiée. Cette balise génère à elle seule une zone de dépôt sur laquelle les créateurs de contenu peuvent faire glisser des modules dans l'éditeur d'e-mail. Le code suivant spécifie une zone de glisser-déposer vide : ```hubl theme={null} {% dnd_area "main" %} <!-- generates an empty drag and drop area drop-section --> {% end_dnd_area %} ``` ### Créer une zone de glisser-déposer avec des colonnes vides Vous pouvez également personnaliser votre zone de glisser-déposer pour spécifier des sections et des colonnes par défaut en utilisant les champs `dnd_section` et `dnd_column`. Par exemple, le code HubL suivant spécifie une zone aires de glisser-déposer avec 3 colonnes : ```hubl theme={null} {% dnd_area "main" %} {% dnd_section padding={'top': 25, 'bottom': '20} %} {% dnd_column width=4 %} {% end_dnd_column %} {% dnd_column width=4 %} {% end_dnd_column %} {% dnd_column width=4 %} {% end_dnd_column %} {% end_dnd_section %} {% end_dnd_area %} ``` > [!WARNING] > > La balise HubL `dnd_row` n'est pas actuellement prise en charge dans les modèles d'e-mail. **4. Ajouter une aire glisser-déposer avec des modules** Pour remplir une section avec du contenu, vous pouvez utiliser la balise `dnd_module` pour inclure un module en mentionnant son chemin d'accès. Le module doit être ajouté à l'intérieur d'une section et d'une colonne afin de pré-remplir la zone de glisser-déposer avec du contenu. Dans l'exemple ci-dessous, un module HubSpot par défaut est référencé, mais vous pouvez également inclure des modules que vous avez créés en spécifiant leur chemin d'accès dans l'arborescence de votre gestionnaire de conception. Pour spécifier une valeur par défaut pour l'élément `dnd_module`, vous pouvez utiliser la balise `module_attribute`. ```hubl theme={null} {% dnd_area "main", full_width=False %} {% dnd_section padding={ 'top':'25', 'bottom':'20' }, full_width=False %} {% dnd_column width=6 %} {% dnd_module path='@hubspot/image_email', img={ 'alt':'NavyLogo', 'height':38, 'src':'email_dnd_template_images/NavyLogo.png', 'width':120 }, alignment='center', hs_enable_module_padding=True, hs_wrapper_css={ 'padding-bottom':'10px', 'padding-left':'20px', 'padding-right':'20px', 'padding-top':'10px' } %} {% end_dnd_module %} {% end_dnd_column %} {% dnd_column width=6 %} {% end_dnd_column %} {% end_dnd_section %} {% end_dnd_area %} ``` **5. Personnaliser et styliser davantage votre modèle de glisser-déposer** Chaque balise HubL de glisser-déposer (par exemple, `dnd_area`, `dnd_section` ou encore `dnd_column`) comprend différents paramètres que vous pouvez utiliser pour fournir un style par défaut et spécifier d'autres comportements tels que le libellé qui apparaîtra dans la barre latérale de l'éditeur d'e-mail. Pour en savoir plus sur les paramètres disponibles pour chaque balise, consultez les liens ci-dessous : * [dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas#dnd-area) * [dnd\_section](/docs/cms/reference/hubl/tags/dnd-areas#dnd-section) * [dnd\_column](/docs/cms/reference/hubl/tags/dnd-areas#dnd-column) * [dnd\_module](/docs/cms/reference/hubl/tags/dnd-areas#dnd-module) # Modèles glisser-déposer Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/drag-and-drop/drag-and-drop-templates Les modèles du gestionnaire de conception en glisser-déposer sont des modèles créés à l'aide d'un outil de conception visuel. Ils ne sont pas recommandés pour les nouveaux modèles car les modèles codés offrent une meilleure expérience. > **Produits pris en charge** > [!WARNING] > > **Les modèles de glisser-déposer ne sont pas recommandés pour les nouveaux modèles.** Ces modèles ne peuvent pas faire partie d'un thème et ne prennent donc pas en charge les fonctionnalités de thème telles que les champs de thème et les modules de thème. Les modèles de glisser-déposer **PAS** pris en charge dans CMS Hub Starter. Utilisez plutôt `dnd_area`. Les modèles de glisser-déposer ne prennent pas en charge plusieurs des nouvelles fonctionnalités du CMS ([contrôles d'accès](/docs/cms/start-building/features/memberships/overview), [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview), [sections réutilisables](/docs/cms/start-building/building-blocks/sections/sections), GraphQL et de nombreuses autres fonctionnalités). Ils manquent d'extensibilité et ne fournissent pas une expérience de création et de développement de contenu aussi bonne que les modèles codés. Nous recommandons plutôt des [modèles HTML + HubL](/docs/cms/start-building/building-blocks/templates/html-hubl-templates) codés avec des [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview), qui offrent une meilleure expérience pour les développeurs et les spécialistes du marketing. Pour un démarrage rapide sur le CMS, nous vous recommandons de consulter le [boilerplate du thème HubSpot](https://github.com/HubSpot/cms-theme-boilerplate), qui a été créé à l'aide de modèles codés. Les [modèles](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview) de glisser-déposer ont été conçus pour permettre aux utilisateurs moins techniques de créer facilement un site web sur le CMS Hub. Les modèles de glisser-déposer tirent parti d'un outil de conception de modèles visuel, qui génère du code HTML + HubL en arrière-plan. Afin de faire fonctionner l'outil de conception visuel, la sortie HTML est contrôlée par HubSpot et vous n'avez pas de contrôle direct sur ses parties structurelles. En outre, un fichier **layout.css est chargé sur la page, ce qui permet une grille de base à 12 colonnes** basée sur bootstrap 2. Cela rend tous les sites créés avec des modèles de glisser-déposer réactifs par défaut, ce qui permet aux lignes de contenu de s'empiler verticalement. Pour une réactivité plus complexe et personnalisée, vous souhaiterez ajouter vos propres styles réactifs. Les modèles de glisser-déposer sont créés dans le gestionnaire de conception. Lors d'interactions avec ces derniers via l'API ou les [outils de développement locaux](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli), ils sont représentés au format JSON. En raison de la nature des modèles de glisser-déposer, la seule façon recommandée de les modifier est via l'interface du gestionnaire de conception. \*\*Si vous préférez coder, utiliser le contrôle des versions ou simplement être en mesure d'éditer via vos outils préférés localement, les modèles codés HTML + HubL offrent la meilleure expérience pour les développeurs.\*\*La fonctionnalité [dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas) pour les modèles HTML + HubL offre également une meilleure expérience aux créateurs de contenu que l'interface en glisser-déposer du gestionnaire de conception, car elle les conserve dans l'éditeur de contenu visuel. ## Outil de création de modèles de glisser-déposer Pour créer un modèle de glisser-déposer, ouvrez le gestionnaire de conception et dans l'outil de recherche, créez un nouveau fichier, choisissez un modèle et le [type de modèle](https://developers.hubspot.fr/docs/guides/cms/content/templates/overview#template-types) que vous créez. Les modèles de glisser-déposer sont constitués de blocs de construction, qui sont des modules, des groupes, des groupes globaux et des colonnes flexibles. [Découvrez comment utiliser l'outil de création de modèles de glisser-déposer.](https://knowledge.hubspot.com/fr/design-manager/structure-and-customize-template-layouts) ### Modules Les modules sont des composants réutilisables qui sont des parties modifiables d'une page. Les modules sont constitués d'un fragment de modèle HTML + HubL, de CSS, de JS et de champs. Les modules peuvent être placés à l'intérieur de colonnes flexibles et de dnd\_areas par les éditeurs de contenu. Ils constituent la principale méthode pour les éditeurs de contenu de créer le contenu de leur site web. Vous pouvez créer des modules pour gérer un certain nombre de fonctions, la recherche, les galeries d'images, les menus, les animations marketing complexes, les calculatrices, les comparaisons de produits et tout ce qui selon vous offre une bonne expérience pour les créateurs de contenu. Les champs sont la façon dont l'éditeur de contenu contrôle leur sortie. Les modules ne sont pas spécifiques aux modèles de glisser-déposer, ils sont un élément de base très important pour le CMS Hub. Dans les modèles de glisser-déposer, les valeurs par défaut des champs de module peuvent être configurées dans [l'inspecteur](https://knowledge.hubspot.com/fr/design-manager/a-quick-tour-of-the-design-manager). [Découvrez-en davantage sur les modules](https://developers.hubspot.fr/docs/guides/cms/content/modules/overview). ![Interface du gestionnaire de conception avec modules mis en évidence](https://cdn2.hubspot.net/hubfs/53/image2-3.png) ### Groupes Les groupes sont des encadreurs pour d'autres groupes et modules. Ils peuvent avoir des classes CSS et du HTML d'encadrement. Les groupes se manifestent sous forme de HTML d'encadrement avec des classes de mise en page pour faciliter le placement et le dimensionnement des groupes. Les groupes peuvent également avoir un nom interne uniquement. Vous pouvez ainsi [regrouper des modules](https://knowledge.hubspot.com/fr/design-manager/structure-and-customize-template-layouts#group-modules) dans le gestionnaire de conception, ce qui facilite l'identification visuelle des parties d'une page. Un exemple de ceci pourrait être pour les barres latérales ou les bannières. > [!WARNING] > > Étant donné que les fichiers [HTML + HubL](/docs/cms/start-building/building-blocks/templates/html-hubl-templates) sont le chemin recommandé pour les nouveaux sites, les colonnes, sections et lignes de [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) remplacent largement les objectifs des groupes. > > En outre, un développeur peut créer des partiels et des [partiels globaux](/docs/cms/start-building/building-blocks/global-content), qui peuvent contenir du code de forme libre en plus des zones de glisser-déposer. > > Les zones de glisser-déposer, les partiels et les partiels globaux ne sont pas pris en charge dans les modèles de glisser-déposer. ![Capture d'écran du gestionnaire de conception avec groupe de barres latérales sélectionné](https://designers.hubspot.com/hubfs/image4-1.png) ### Groupes globaux Les groupes globaux sont des groupes qui, lorsqu'ils sont modifiés, affectent l'ensemble du site web et pas seulement la page sur laquelle ils se trouvent. Les groupes globaux peuvent exister dans plusieurs modèles et sont le plus souvent utilisés pour les en-têtes et les pieds de page de site. Les groupes globaux sont similaires aux partiels, mais sont limités à la structure que les modèles de glisser-déposer appliquent. Ils peuvent être intégrés dans des fichiers HTML + HubL si nécessaire, mais la plupart du temps, il est plus logique d'utiliser un partial global à la place. ![Interface du gestionnaire de conception avec les groupes globaux d'en-tête et de pied de page mis en évidence](https://cdn2.hubspot.net/hubfs/53/image1-3.png) ### Colonnes flexibles Les colonnes flexibles sont un type particulier de groupe. Elles peuvent contenir un ensemble de modules par défaut, mais les éditeurs de contenu peuvent ajouter, supprimer et déplacer des modules en leur sein. Les colonnes flexibles permettent de réorganiser les modules d'une manière unidimensionnelle, verticalement vers le haut et vers le bas. [Contrairement aux balises dnd\_area](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview), les **colonnes flexibles ne prennent pas en charge les sections ou les fonctionnalités de style proposées pour les modules qui les composent.** Les colonnes flexibles ne sont pas uniques aux modèles de glisser-déposer. Il existe une [balise HubL](/docs/cms/reference/hubl/tags/standard-tags#flexible-column) qui peut être utilisée dans les modèles [HTML + HubL](/docs/cms/start-building/building-blocks/templates/html-hubl-templates). [Découvrez comment ajouter une colonne flexible à un modèle de glisser-déposer.](https://knowledge.hubspot.com/fr/design-manager/structure-and-customize-template-layouts#add-a-flexible-column) > [!TIP] > > Il est généralement recommandé d'utiliser des zones de glisser-déposer, car elles sont la plupart du temps plus utiles et offrent toutes les fonctionnalités des colonnes flexibles. > > L'utilisation d'une colonne flexible peut cependant rester utile, comme pour une barre latérale. Pour les principales zones de contenu, les zones de glisser-déposer sont beaucoup plus flexibles. ![Capture d'écran du gestionnaire de conception avec le groupe de contenu principal sélectionné](https://designers.hubspot.com/hubfs/image3-2.png) Pourquoi utiliser des colonnes flexibles ? Les sites web ne sont généralement pas rigides. Ils sont créés et gérés pendant de longues périodes. Une page d'accueil, par exemple pour une entreprise, peut présenter des produits en vedette et changer fréquemment à mesure que les besoins marketing de l'entreprise évoluent. Étant donné que du contenu dans une colonne flexible peut être ajouté/supprimé et modifié par les éditeurs de contenu, l'expérience est moins difficile pour les spécialistes du marketing et permet aux développeurs de se concentrer sur ce qu'ils aiment, en créant des éléments attrayants plutôt que de procéder à des ajustements de page mineurs. De même, les pages d'un site peuvent avoir des besoins structurels différents. Les colonnes flexibles offrent du contrôle aux spécialistes du marketing pour créer ces pages à l'aide de modules personnalisés. ### Ajouter du code personnalisé à vos modèles de glisser-déposer Il existe plusieurs façons d'ajouter du code personnalisé à vos modèles de glisser-déposer. La principale méthode consiste à utiliser des modules personnalisés. Cependant, vous pourrez parfois ajouter du code qui encadre les modules ou les groupes. Pour ce faire, cliquez sur le module ou le groupe pour le visualiser dans l'inspecteur et trouver le champ HTML d'encadrement. Ajoutez votre HTML ici. Parfois, vous devrez peut-être ajouter du code à l'en-tête de votre HTML ou juste au-dessus de `</body>`. Lorsque votre modèle est ouvert, assurez-vous que rien n'est sélectionné. L'inspecteur affichera des champs pour le modèle lui-même. Ici, vous pouvez lier des feuilles de style et des fichiers JavaScript tout en ajoutant du HTML supplémentaire dans l'en-tête ou juste avant la balise `</body>`. Pour cela, vous utiliserez [l'inspecteur](https://knowledge.hubspot.com/fr/design-manager/a-quick-tour-of-the-design-manager). L'inspecteur présente des champs au niveau du modèle pour les [feuilles de style, le JavaScript](https://knowledge.hubspot.com/fr/design-manager/a-quick-tour-of-the-design-manager##attach-stylesheets-and-javascript-files), [le balisage `<head>`](https://knowledge.hubspot.com/fr/design-manager/a-quick-tour-of-the-design-manager#customize-your-template-s-head-and-body-options), etc. ![Panneau d'inspecteur de code personnalisé du gestionnaire de conception](https://designers.hubspot.com/hubfs/image5.png) # Présentation des zones de glisser-déposer Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/drag-and-drop/overview Les zones de glisser-déposer permettent aux créateurs de contenu de placer des modules, de modifier la mise en page et certains styles dans les éditeurs de contenu. Les développeurs créent des mises en page prédéfinies. Les zones de glisser-déposer vous permettent de créer des zones de pages et des partiels globaux dans lesquels les créateurs de contenu peuvent placer des modules, modifier la mise en page et ajouter des styles dans l'éditeur de contenu. En utilisant les zones de glisser-déposer, vous pouvez créer moins de modèles, car les créateurs de contenu peuvent créer leurs propres mises en page. Découvrez ci-dessous l'expérience et les concepts de `dnd_area`. Consultez la page [Démarrer avec les dnd\_area](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial), et la référence [dnd\_area](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas) pour créer directement votre contenu. > [!WARNING] > > ### Remarque : > > Les zones de glisser-déposer ne peuvent pas être utilisées dans des [articles de blog](/docs/cms/start-building/building-blocks/templates/blog) et les [modèles d'e-mails](/docs/cms/start-building/building-blocks/templates/overview#email). ## L'expérience du créateur de contenu Lorsqu'un créateur de contenu crée une page à l'aide d'un modèle comportant des zones de glisser-déposer, il voit d'abord la page avec des modules prédéfinis dans la mise en page que vous avez définie en tant que développeur. Cette première mise en page constitue un précédent pour l'apparence des pages utilisant ce modèle. À l'aide des zones de glisser-déposer, le créateur de contenu peut ensuite construire la page, notamment : * Ajout de modules, de sections, de lignes et de colonnes. * Redimensionnement des modules et mise à jour de leur contenu et de leur style, par exemple ajustement de l'alignement et ajout d'arrière-plans. Ils peuvent ainsi apporter de simples modifications aux pages sans avoir à faire appel à un développeur pour de petits ajustements. > [!WARNING] > > ### Remarque : > > Un créateur de contenu peut échanger le modèle d'une page contre un autre modèle du même type, selon qu'il possède ou non des balises [dnd\_area](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas). > > * Les modèles construits avec l'éditeur visuel de mise en page par glisser-déposer peuvent être remplacés par d'autres modèles par glisser-déposer ou par des modèles codés avec ou sans les balises `dnd_area`. > * Les modèles codés avec des balises *dnd\_area* ne peuvent être échangés que contre d'autres modèles codés avec des balises `dnd_area`. > * Les modèles codés sans balises `dnd_area` ne peuvent être échangés que contre d'autres modèles codés sans balises `dnd_area`. > > Lorsque le modèle de la page est changé, tout contenu existant ajouté aux zones de glisser-déposer du premier modèle sera conservé. ![L'expérience de l'éditeur de page pour les zones de glisser-déposer dnd\_areas](https://cdn2.hubspot.net/hubfs/53/drag-and-drop.gif) ## L'expérience du développeur Le développement avec des zones de glisser-déposer est similaire au travail avec les cadres CSS courants et leurs grilles. Tout d'abord, la page est mise en page à l'aide de conteneurs, appelés [sections](/docs/cms/start-building/building-blocks/sections/sections), qui contiennent des lignes. À l'intérieur de ces lignes se trouvent des modules et des colonnes. Pour en savoir plus sur ces [éléments](#drag-and-drop-area-elements), voir ci-dessous. Bien que vous puissiez coder presque tout dans le modèle, l'objectif du développement avec des zones de glisser-déposer est de construire le contenu de la page par défaut, qui pourra ensuite être modifié par un créateur de contenu. Consultez les [modèles HubSpot CMS Boilerplate](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/templates) pour voir les balises `dnd_area` utilisées. ![dnd\_area codé en VS Code](https://cdn2.hubspot.net/hubfs/53/dnd%20coded.png) ## Éléments des zones de glisser-déposer Lorsque vous construisez une page avec des zones de glisser-déposer, vous incluez les éléments suivants : * [**dnd\_area**](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#dnd-area)\*\* :\*\* l'élément de glisser-déposer de plus haut niveau qui permet de glisser-déposer des modules dans l'éditeur de contenu. Il n'est pas possible d'imbriquer des zones par glisser-déposer. Par exemple, `dnd_section` ne peut pas contenir une balise `dnd_area`. * [**dnd\_section**](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#dnd-section)\*\* :\*\* le conteneur le plus à l'extérieur dans un `dnd_area`. Peut contenir `dnd_row`, `dnd_column`, et `dnd_module`. Il n'est pas possible d'imbriquer `dnd_section` dans d'autres éléments de type glisser-déposer. * [**dnd\_column**](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#dnd-column)\*\* :\*\* peut contenir `dnd_row`. La présence de plusieurs colonnes dans un `dnd_row` alignera le contenu de la ligne horizontalement. * [dnd\_row](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#dnd-row)\*\* :\*\* peut contenir `dnd_module` et `dnd_column`. * [dnd\_module](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#dnd-module)\*\* :\*\* un cadre de module où la présentation, les styles et le contenu du module peuvent être ajoutés. En savoir plus sur chacune des balises ci-dessous. En outre, vous pouvez consulter le guide [Démarrer avec les zones de glisser-déposer](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial) pour une approche pratique. ![Relations entre les éléments de glisser-déposer](https://www.hubspot.fr/hubfs/Drag%20and%20Drop%20relationships.png) Le diagramme ci-dessous détaille la hiérarchie des différents éléments en glisser-déposer. ![Exemple de structure](https://cdn2.hubspot.net/hubfs/53/Example%20structure.png) Pour une démonstration de la visualisation des zones de glisser-déposer, regardez la vidéo ci-dessous : [https://www.youtube.com/embed/RUs24n8DfzA](https://www.youtube.com/embed/RUs24n8DfzA) Poursuivez votre lecture pour en savoir plus sur les sections, lignes, colonnes et modules de glisser-déposer. ### Sections Les sections sont un type particulier de lignes qui sont créées à l'aide de la balise [`dnd_section`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-section-code-dnd-section-code-). Elles sont le seul élément de glisser-déposer pouvant être un descendant direct de `dnd_area`. Les sections servent d'encadrement extérieur. Elles peuvent permettre au contenu d'être en pleine largeur ou d'avoir une largeur maximale confinée au centre. Comme les sections s'articulent autour des colonnes et des modules, il est facile de réorganiser et d'implémenter de grandes quantités de contenu. La balise `dnd_section` n'assure pas le rendu d'un élément HTML `<section>`. Vous trouverez ci-dessous une capture d'écran montrant comment une section apparaît dans l'éditeur de pages. ![Section dans l'éditeur de page](https://cdn2.hubspot.net/hubfs/53/Section%20in%20page%20editor.png) Outre la balise `dnd_section`, vous pouvez également créer des [modèles de section](/docs/cms/start-building/building-blocks/sections/sections#create-reusable-sections) qui sont des sections prédéfinies et réutilisables auxquelles les créateurs de contenu peuvent accéder dans l'éditeur de page. Par exemple, vous pouvez créer la section illustrée dans la capture d'écran ci-dessus sous la forme d'un modèle de section afin qu'un créateur de contenu puisse l'ajouter rapidement aux pages en fonction de ses besoins. Les sections réutilisables ont de nombreuses spécificités : elles peuvent notamment être utilisées comme un modèle de partial standard hubL. ### Colonnes Les colonnes servent de cadre aux lignes et aux modules, et peuvent être placées à l'intérieur d'une ligne ou d'une section. Les colonnes sont créées à l'aide de la balise [`dnd_column`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-column-code-dnd-column-code-). Utilisez plusieurs colonnes à l'intérieur d'une ligne pour placer horizontalement les lignes et les modules qu'elles contiennent. Les colonnes sont des zones verticales qui peuvent contenir des lignes. Vous pouvez créer des colonnes de tailles différentes en modifiant leur largeur. La largeur d'une ligne est de 12 « colonnes », en référence à la grille CSS. Les colonnes situées à l'intérieur d'une ligne peuvent avoir toute taille inférieure à 12, mais leur total ne peut pas dépasser 12. Lorsque plusieurs lignes sont placées à l'intérieur d'une colonne, les modules de ces lignes apparaissent empilés verticalement. Comme les modules sont eux-mêmes des colonnes, ils ne peuvent pas être des descendants directs d'une colonne. Ils doivent être contenus dans une ligne. ![dnd\_area column in page editor](https://cdn2.hubspot.net/hubfs/53/dnd_area%20column%20in%20page%20editor.png) L'apparence d'une colonne dans l'éditeur de page. ### Lignes Les lignes encadrent les colonnes. Elles peuvent être créées dans les modèles à l'aide de la balise [`dnd_row`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-row-code-dnd-row-code-). Comme les modules sont des colonnes, vous pouvez les placer directement à l'intérieur d'une ligne. Ainsi, les modules apparaîtront horizontalement les uns à côté des autres. Les modules peuvent être organisés verticalement en les plaçant à l'intérieur de lignes. Si vous voulez placer un module au-dessus d'un autre, vous devez placer ce module à l'intérieur d'une ligne. Vous devez ensuite ajouter un autre module dans une ligne au-dessus ou en dessous de cette première ligne. ![dnd\_area row in page editor](https://cdn2.hubspot.net/hubfs/53/dnd_area%20row%20in%20page%20editor.png) L'apparence d'une ligne dans l'éditeur de page. ### Modules Les [modules](/docs/cms/start-building/building-blocks/modules/overview) sont une partie fondamentale du CMS Hub, agissant comme des blocs de construction réutilisables destinés à assembler un site et afficher du contenu. Lors de la création d'un modèle, vous placez les modules à l'intérieur des lignes et des sections de glisser-déposer en utilisant la balise [`dnd_module`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-module-code-dnd-module-code-). Les modules sont également des colonnes. Cela signifie que si vous placez deux balises de module, ou un module et une colonne directement l'un à côté de l'autre, ils apparaîtront côte à côte horizontalement. Il est impossible de placer des éléments de glisser-déposer dans un module. Les modules ne peuvent pas être les enfants directs de [`dnd_area`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-area-code-dnd-area-code-). ## Structure et style HTML Une fois rendus, les zones de glisser-déposer et leurs éléments associés ont des noms de classe pour une grille à 12 colonnes développée sous bootstrap 2. Pour faciliter la mise en route, vous pouvez utiliser le fichier [\_layout.css](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/css/objects/_layout.css) du [boilerplate du CMS Hub.](https://github.com/HubSpot/cms-theme-boilerplate/) Cette action fournit des styles par défaut pour ces noms de classe. Il n'est pas obligatoire d'utiliser cette feuille de style et pouvez définir vos propres styles à la place. Si vous construisez votre site à partir du boilerplate du thème CMS et que vous souhaitez utiliser votre propre CSS, vous devez [supprimer l'appel de layout.css dans base.html](https://github.com/HubSpot/cms-theme-boilerplate/blob/5abaf2a4c45a95dbed1d459f7f0f6407350752ac/src/templates/layouts/base.html#L8). Pour votre propre grille CSS, vous devrez cibler ces mêmes noms de classe de grille, mais le choix du style vous appartient. Lors du rendu, les zones de glisser-déposer créent des balises div avec des classes utilisées par l'éditeur de page. Par exemple, `widget-span` et `widget-type-cell`. Ne ciblez pas directement ces classes, car elles sont utilisées par l'éditeur de pages et peuvent évoluer dans le temps. Au lieu de cela, ajoutez dans votre [`dnd_area`](https://developers.hubspot.fr/docs/reference/cms/hubl/tags/dnd-areas#drag-and-drop-area-code-dnd-area-code-) un paramètre de classe avec le nom de la classe que vous souhaitez utiliser. ```html theme={null} <div class="container-fluid my-custom-class"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell" style="" data-widget-type="cell" data-x="0" data-w="12"></div> <!--end widget-span --> </div> </div> </div> ``` ### Style de l'éditeur et des attributs Grâce aux zones de glisser-déposer, les créateurs de contenu peuvent avoir une certaine influence sur le style de la page. Ils peuvent par exemple faire en sorte qu'une section ait un arrière-plan. Les développeurs peuvent transmettre des valeurs par défaut pour ces paramètres par le biais d'attributs. Lors du rendu de la page, les styles générés en fonction de ces paramètres sont ajoutés à `standard_header_includes`. ## Migration des colonnes flexibles Si vous changez des modèles construits avec des colonnes flexibles pour utiliser des zones de glisser-déposer, gardez à l'esprit certains éléments. Les colonnes flexibles ne sont pas les mêmes que les zones de glisser-déposer. Vous ne pouvez pas passer d'un modèle qui ne comporte qu'une colonne flexible à un modèle qui ne comporte qu'une zone de glisser-déposer. Cette limitation a été mise en place parce que le contenu ne pouvait pas être transféré de la colonne flexible à la zone de glisser-déposer. Pour illustrer ce phénomène, supposons que vous ayez construit votre nouveau modèle de manière à avoir une barre latérale et une zone de contenu principal. Votre barre latérale est une colonne flexible, votre contenu principal est une zone de glisser-déposer. L'outil de permutation fait correspondre la colonne flexible à la colonne flexible. En savoir plus sur l'[ajout de zones de glisser-déposer à des pages existantes](https://developers.hubspot.fr/docs/guides/cms/improve-older-sites/add-theme-features-to-existing-sites#drag-and-drop-areas) ## Ressources associées * [Ajout de zones de glisser-déposer à des sites web existants](https://developers.hubspot.fr/docs/guides/cms/improve-older-sites/add-theme-features-to-existing-sites#drag-and-drop-areas) * [Création d'une zone de dépôt](/docs/cms/start-building/building-blocks/drag-and-drop/tutorial) * [Visualisation des zones de glisser-déposer - YouTube](https://www.youtube.com/watch?v=RUs24n8DfzA\&feature=youtu.be) # Créer une zone de glisser-déposer Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/drag-and-drop/tutorial Utilisez des zones de glisser-déposer pour aider les créateurs de contenu à apporter facilement des modifications de mise en page, de style et de contenu. > **Produits pris en charge** Les [zones de glisser-déposer](https://developers.hubspot.fr/docs/guides/cms/content/templates/drag-and-drop/overview) sont des sections d'un modèle qui agissent comme des conteneurs vides qui peuvent être modifiés directement à partir de l'éditeur de page. La création de zones de glisser-déposer dans un modèle permet aux créateurs de contenu d'ajouter et de gérer les modules dans l'éditeur de page selon leurs besoins, plutôt que de s'appuyer sur des modules statiques intégrés au modèle. ![Animation de modules glissés sur une page, avec ajustement des colonnes et des lignes](https://newinboundblog.hubspot.com/hubfs/a%20new%20approach.gif) En plus d'utiliser les zones de glisser-déposer comme zones de dépôt vides pour les créateurs de contenu, vous pouvez également pré-remplir les zones de glisser-déposer avec divers modules, mises en page et contenus pour servir de point de départ. Ce tutoriel vous montrera comment configurer une zone de glisser-déposer simple. Pour plus de ressources de développement sur les zones de glisser-déposer, consultez le [boilerplate](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/home.html) et découvrez les bonnes pratiques de mise en œuvre ainsi que la [documentation de référence sur les balises HubL pour les zones de glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas). > [!WARNING] > > **Remarque :** un créateur de contenu peut échanger le modèle d'une page contre un autre modèle du même type, selon qu'il possède ou non des balises [dnd\_area](/docs/cms/reference/hubl/tags/dnd-areas). > > * Les modèles de glisser-déposer créés avec l'éditeur visuel de mise en page peuvent être remplacés par d'autres modèles de glisser-déposer ou par des modèles codés avec ou sans les balises *dnd\_area*. > * Les modèles codés avec des balises *dnd\_area* ne peuvent être échangés que contre d'autres modèles codés avec des balises *dnd\_area*. > * Les modèles codés sans balises *dnd\_area* ne peuvent être échangés que contre d'autres modèles codés sans balises *dnd\_area*. > > Lorsque le modèle de la page est changé, tout contenu existant ajouté aux zones de glisser-déposer du premier modèle sera conservé. **1. Créer un nouveau modèle HTML** Créez un nouveau modèle HTML pour héberger le HubL et le HTML qui constitueront votre section de glisser-déposer. > [!NOTE] > > Les zones de glisser-déposer sont basées sur une grille réactive à 12 colonnes. Les balises par glisser-déposer rendent le balisage avec des noms de classe désignant les colonnes et les lignes. Vous devez ajouter une feuille de style pour cibler ces noms de classe. Vous pouvez trouver un exemple de styles de mise en page que vous pouvez mettre en œuvre dans le [Boilerplate de CMS Hub](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/css/objects/_layout.css). Votre feuille de style peut être ajoutée au modèle en utilisant [`{{ require_css() }}`](/docs/cms/reference/hubl/tags/standard-tags#require-css). **2. Créer une zone de glisser-déposer** Un élément `dnd_area` est un conteneur qui rend une partie de la page web modifiable en termes de structure, de conception et de contenu. Le corps d'une balise `dnd_area` fournit le contenu par défaut de la zone de glisser-déposer. Cette balise génère à elle seule une zone de dépôt dans laquelle les créateurs de contenu peuvent faire glisser des modules. ```hubl theme={null} {% dnd_area "body_dnd_area" %} <!-- generates an empty drag and drop area drop-section --> {% end_dnd_area %} ``` **3. Créer une section avec un module** Un élément `dnd_section` est une ligne de niveau supérieur et ne peut être qu'un enfant direct d'un élément `dnd_area`. Les sections prennent en charge une variété de paramètres qui contrôlent les valeurs par défaut des contrôles stylistiques dont disposent les créateurs de contenu pour les sections au sein des créateurs de contenu. Par exemple, le code ci-dessous crée une section avec une image d'arrière-plan (`background_image`). Cette section est centrée par un paramètre `vertical-alignment` et a une largeur de champ maximale de `1000px` pour le contenu enfant. Pour obtenir une liste complète des paramètres pris en charge par les balises HubL de type glisser-déposer, consultez la [documentation de référence sur les balises HubL de type glisser-déposer](/docs/cms/reference/hubl/tags/dnd-areas). Pour pré-remplir la section avec du contenu, le code comprend également une balise `dnd_module` permettant d'inclure un module en mentionnant son chemin d'accès. Dans cet exemple, la propriété `dnd_module` extrait le module de texte enrichi par défaut de HubSpot, tel que défini par le paramètre `path`. Une valeur par défaut pour le module de texte enrichi est spécifiée à l'aide de la balise `module_attribute`. ```hubl theme={null} {% dnd_area "body_dnd_area" %} {% dnd_section background_image = { 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': 'https://www.dragndrop.com/bg-image.jpg' }, max_width=1000, vertical_alignment='MIDDLE' %} {% dnd_module path='@hubspot/rich_text' %} {% module_attribute "html"%} This is your main headline. Use this space to tell everyone about what you have to offer. {% end_module_attribute %} {% end_dnd_module %} {% end_dnd_section %} {% end_dnd_area %} ``` La zone de glisser-déposer contient alors un module que les créateurs de contenu peuvent modifier dans l'éditeur de contenu. Notez comment la configuration de `max_width` sur `dnd_section` affecte le contenu. ![Capture d'écran de l'éditeur de page avec la barre d'outils du module affichée](https://newinboundblog.hubspot.com/hubfs/dnd_rich_text.png) **4. Inclure plusieurs modules** Pour inclure plusieurs modules, vous pouvez utiliser plusieurs balises `dnd_module`. En réglant les paramètres `offset` et `width` qui sont basés sur une grille à 12 colonnes, vous pouvez placer un module d'image à côté du module de texte enrichi comme indiqué ci-dessous. ```hubl theme={null} {% dnd_area "body_dnd_area" %} {% dnd_section background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': 'https://www.dragndrop.com/bg-image.jpg' }, max_width=1000, vertical_alignment='MIDDLE' %} {% dnd_module path='@hubspot/rich_text', width=8, offset=0, label="Rich Text" %} {% module_attribute "html"%} <h1>This is your main headline.</h1> Use this space to tell everyone about what you have to offer. {% end_module_attribute %} {% end_dnd_module %} {% dnd_module path='@hubspot/linked_image', width=4, offset=8, img={ "src": "https://www.dragndrop.com/placeholder-image.jpg", "alt": "Stock placeholder image" } %} {% end_dnd_module %} {% end_dnd_section %} {% end_dnd_area %} ``` La page comprend désormais un module d'image modifiable ainsi qu'une poignée de glissement permettant aux créateurs de contenu de modifier la largeur et le décalage des modules. Notez que le fait de définir `vertical_alignment` sur `dnd_section` permet de centrer verticalement le contenu. ![capture d'écran de l'éditeur de page montrant un module d'image ajouté à une section](https://newinboundblog.hubspot.com/hubfs/dnd_rich_image.png) **5. Incorporer des colonnes et des lignes** Pour rendre la zone de glisser-déposer plus complexe, vous pouvez incorporer des lignes et des colonnes à l'aide des balises `dnd_row` et `dnd_column`. Les lignes et les colonnes agissent de la même manière que les sections dans l'éditeur de contenu, où les créateurs de contenu peuvent les faire glisser ainsi que les cloner, les supprimer et les styliser. ```hubl theme={null} {% dnd_area "body_dnd_area" %} {% dnd_section background_image={ 'backgroundPosition': 'MIDDLE_CENTER', 'backgroundSize': 'cover', 'imageUrl': 'https://www.dragndrop.com/bg-image.jpg' }, max_width=1000, vertical_alignment='MIDDLE' %} {% dnd_module path='@hubspot/linked_image', width=6, img={ "src": "https://www.dragndrop.com/placeholder-image.jpg", "alt": "Stock placeholder image" } %} {% end_dnd_module %} {% dnd_column width=6, offset=6 %} {% dnd_row padding={ 'bottom': 15 } %} {% dnd_module path='@hubspot/rich_text' %} {% module_attribute "html"%} <h1>This is your main headline.</h1> Use this space to tell everyone about what you have to offer. {% end_module_attribute %} {% end_dnd_module %} {% end_dnd_row %} {% dnd_row %} {% dnd_module path='@hubspot/form' %} {% end_dnd_module %} {% end_dnd_row %} {% end_dnd_column %} {% end_dnd_section %} {% end_dnd_area %} ``` Désormais, les créateurs de contenu disposeront d'un contrôle plus poussé du style et de la mise en page sur des lignes et des colonnes spécifiques, en plus des modules et des sections. ![Capture d'écran de l'éditeur de page montrant une ligne avec deux colonnes, un module d'image à gauche, un module de texte enrichi et un module de formulaire à droite.](https://newinboundblog.hubspot.com/hubfs/dnd_area_full.png) **6. Définir des styles génériques pour les composants de glisser-déposer** Les différents composants des zones de glisser-déposer, des sections, des colonnes, des lignes et des modules possèdent tous des classes qui peuvent être stylisées à l'aide de CSS. Les styles et options modifiables de ces composants peuvent être définis à l'aide de CSS plutôt que de HubL. Par exemple, le remplissage par défaut peut être défini sur `dnd_sections` avec la CSS : ```css theme={null} .dnd-section { padding: 80px 20px; } ``` Les sélecteurs CSS génériques pour les composants de la zone de glisser-déposer sont `.dnd-section`, `.dnd-column`, `.dnd-row` et `.dnd-module`. En dehors de ces classes préfixées `dnd`, les noms des classes de la grille dans le balisage sont basés sur des noms Bootstrap 2. Cela ne signifie pas que vous devez utiliser Bootstrap 2 avec des zones de glisser-déposer. Lorsque vous ajoutez `dnd_area` à votre page, vous devez fournir les styles qui permettent à la grille de fonctionner. Vous pouvez trouver un exemple de styles de mise en page que vous pouvez mettre en œuvre dans le [Boilerplate de CMS Hub](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/css/objects). Votre feuille de style peut être ajoutée au modèle en utilisant [`{{ require_css() }}`](/docs/cms/reference/hubl/tags/standard-tags#require-css). ## Tutoriels connexes * [Premiers pas avec les thèmes](/docs/cms/start-building/building-blocks/themes/getting-started) * [Premiers pas avec les modules personnalisés](/docs/cms/start-building/building-blocks/modules/overview) * [Ajouter des fonctionnalités de thème à un site existant](/docs/cms/best-practices/improve-existing-sites/add-theme-features-to-existing-sites) # Thèmes enfants Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/themes/child-themes # Thèmes par défaut Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/themes/default-themes HubSpot vous propose une variété de thèmes à utiliser, à modifier ou à définir comme référence pour votre propre thème de site web. Vous pouvez également télécharger ces thèmes dans votre environnement local à l'aide de nos outils d'ILC. > **Produits pris en charge** HubSpot fournit un ensemble de thèmes par défaut que les créateurs de contenu peuvent utiliser pour créer des pages de site web sans avoir à modifier le thème de base. Ces thèmes sont parfaits pour les créateurs de contenu qui ont un accès moindre aux ressources des développeurs. Si vous souhaitez développer votre propre thème, il est recommandé de commencer par le [boilerplate de CMS Hub](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate). Toutefois, vous pouvez télécharger et modifier les thèmes par défaut à l'aide de l'[ILC HubSpot](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli). Découvrez ci-dessous les thèmes par défaut actuellement disponibles. > [!WARNING] > > ### Remarque: > > Les comptes ***CMS Hub*** *Starter* n'ont accès qu'au thème Growth. ## Modification des thèmes par défaut Les thèmes par défaut de HubSpot sont situés dans un dossier intitulé @hubspot dans le système de fichiers de développeur. Ce dossier est en lecture seule et le contenu ne peut être modifié que par HubSpot. Si vous souhaitez modifier un thème, vous devrez [récupérer](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#fetch) le thème que vous souhaitez, puis [télécharger](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#upload) le thème avec vos modifications dans un dossier différent de @hubspot. ## Liste des thèmes par défaut N'hésitez pas à télécharger nos thèmes par défaut via les commandes d'ILC répertoriées. [Découvrez-en davantage sur la commande fetch](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli#fetch) dans l'[ILC de CMS](https://developers.hubspot.fr/docs/guides/cms/tools/local-development-cli). ### Thème Growth ![Page d'accueil du thème Growth](https://www.hubspot.com/hubfs/5Cdocs/default-themes/growth-homepage.jpg) [View Growth theme live demo](https://design-assets.hubspot.com/growth/home) #### Industry: Any #### Features: * 18 Modules * 12 Sections * 16 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/growth <destination-folder> ``` ## Thèmes par défaut en mode maintenance Les thèmes suivants ont été déplacés en mode maintenance. Ils ne seront plus mis à jour avec de nouvelles fonctionnalités et ne recevront que des mises à jour concernant la sécurité, l'accessibilité et les corrections de bugs. ### Thème Barricade Un thème destiné aux entreprises de construction. ![Capture d'écran du thème Barricade](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-barricade-theme-thumb-4.jpg) [View Barricade theme live demo](https://design-assets.hubspot.com/barricade/home) #### Industry: Construction #### Features: * 10 Modules * 19 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/barricade <destination-folder> ``` ### Thème Education Un thème conçu pour les écoles, les lycées ou d'autres établissements d'enseignement. ![Capture d'écran du thème Education](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-education-theme-thumb-4.jpg) [View Education theme live demo](https://design-assets.hubspot.com/education/home) #### Industry: Education #### Features: * 13 Modules * 18 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/education <destination-folder> ``` ### Thème Martech Un thème de site web destiné aux entreprises technologiques marketing. ![Capture d'écran du thème Martech](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-martech-theme-thumb-4.jpg) [View Martech theme live demo](https://design-assets.hubspot.com/martech/home) #### Industry: Business Services, Marketing Agency #### Features: * 9 Modules * 19 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/martech <destination-folder> ``` ### Thème Rally Un thème conçu pour les entreprises et les agences. ![Capture d'écran du thème Rally](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-rally-theme-thumbnail-1-4.png) [View Rally theme live demo](https://design-assets.hubspot.com/rally/home) #### Industry: Business Services, Marketing Agency #### Features: * 14 Modules * 19 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/cms-rally <destination-folder> ``` ### Thème de session Un thème conçu pour les entreprises. ![Capture d'écran du thème de session](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-session-theme-thumb-4.jpg) [View Session theme live demo](https://design-assets.hubspot.com/session/home) #### Industry: Business Services, Consumer Services #### Features: * 9 Modules * 18 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/session <destination-folder> ``` ### Thème Sprout Un thème conçu pour les entreprises et les agences. ![Capture d'écran du thème Sprout](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-sprout-theme-thumb-4.jpg) [View Sprout theme live demo](https://design-assets.hubspot.com/sprout/home) #### Industry: Business Services, Consumer Services #### Features: * 15 Modules * 21 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/sprout <destination-folder> ``` ### Thème Vitality Un thème conçu pour les entreprises et les agences. ![Capture d'écran du thème Vitality](https://cdn2.hubspot.net/hubfs/53/5Cdocs/default-themes/cms-vitality-theme-thumb-4.jpg) [View Vitality theme live demo](https://design-assets.hubspot.com/vitality/home) #### Industry: Business Services, Healthcare, Consumer Services #### Features: * 8 Modules * 18 Templates #### How to download: ```shell theme={null} hs fetch @hubspot/vitality <destination-folder> ``` # Premiers pas avec les thèmes Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/themes/getting-started Faites vos premiers pas avec les thèmes sur le CMS Hub. Un thème est un ensemble portable et contenu de ressources de développement conçues pour fonctionner ensemble afin d'offrir une expérience flexible en matière de modification de contenu. Ces ressources peuvent comprendre des modèles, des modules, des fichiers CSS, des fichiers JavaScript, des images, etc. Les thèmes permettent aux développeurs de créer un ensemble de champs de thème, à l'image des champs de module, ce qui permet aux créateurs de contenu de contrôler les styles globaux du site web sans avoir à modifier les CSS. Vous pouvez utiliser HubL pour accéder aux valeurs des champs du thème dans la CSS du thème. Les créateurs de contenu peuvent alors utiliser l'éditeur de thème pour modifier les champs du thème, prévisualiser ces modifications par rapport aux modèles existants dans un thème et publier leurs modifications. ![Animation de l'interface utilisateur de modification des paramètres de thème montrant la sélection d'une couleur pour les éléments d'un thème.](https://www.hubspot.com/hubfs/cms-themes-animation.gif) Ce document vous guide dans la création de votre premier thème basé sur le [boilerplate du CMS Hub](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate). Pour en savoir plus sur les thèmes, consultez la [documentation de référence relative aux thèmes](/docs/cms/start-building/building-blocks/overview). > [!TIP] > > S'il s'agit de votre première expérience de développement avec le CMS Hub, il est recommandé de passer par là : > > [Démarrage rapide du développement CMS Hub](https://developers.hubspot.fr/docs/guides/cms/quickstart) > [!WARNING] > > ### Remarque: > > avant de commencer, vous devrez installer l'[ILC HubSpot](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). **1. Démarrer un projet de thème avec boilerplate** Exécuter `hs create website-theme my-website-theme` pour créer un répertoire `my-website-theme` composé de fichiers provenant du [boilerplate du thème CMS](https://github.com/HubSpot/cms-theme-boilerplate). **2. Télécharger le boilerplate CMS sur votre compte HubSpot** Exécutez `hs upload my-website-theme my-website-theme`. Le modèle sera téléchargé dans le gestionnaire de conception de votre compte, dans un dossier intitulé *my-website-theme*. **3. Créer une page** Pour créer une page à partir du thème téléchargé : * Dans votre compte HubSpot, accédez à **Marketing** > **Site web** > **Pages de site web**. * Cliquez sur **Créer** dans l'angle supérieur droit, puis sélectionnez **Page de site web**. * Dans la boîte de dialogue, sélectionnez le **domaine** sur lequel la page sera publiée, puis saisissez un **nom de page**. Cliquez ensuite sur **Créer une page**. ![create-page-from-dashboard](https://www.hubspot.com/hubfs/Knowledge_Base_2023/create-page-from-dashboard.gif) * Sur l'écran de sélection des modèles, les modèles de votre [thème actif](https://knowledge.hubspot.com/website-pages/use-themes#use-an-active-theme) apparaissent en haut de la page. * Si vous n'avez pas sélectionné de thème actif, passez la souris sur le **boilerplate du thème CMS** et cliquez sur **Définir comme thème actif**. * Si vous avez déjà défini un thème actif, sélectionnez votre nouveau thème en cliquant sur le menu déroulant du **sélecteur de thème**, puis en sélectionnant **Modifier le thème**. Ensuite, passez le curseur sur **Boilerplate du thème CMS** et cliquez sur **Définir comme thème actif**. Sur l'écran suivant, sélectionnez un **modèle**. ![theme-selector](https://www.hubspot.com/hubfs/Knowledge_Base_2023/theme-selector.gif) Vous serez redirigé vers l'éditeur de page où vous pourrez modifier les champs du thème. **4. Modifier les champs de thème** * Dans la barre latérale gauche de l'éditeur de page, cliquez sur l'onglet **Thèmes**. * Dans l'onglet *Thèmes*, cliquez sur **Modifier les paramètres de thème**. C'est ici que vous pouvez modifier les paramètres de votre thème existant. La publication des modifications apportées aux paramètres du thème mettra à jour les styles sur toutes vos pages utilisant le thème mis à jour. ![edit-theme-settings](https://www.hubspot.com/hubfs/Knowledge_Base_2023/edit-theme-settings.gif) **5. Préparez-vous à apporter des modifications locales** Revenez à votre terminal, puis exécutez `hs watch my-website-theme my-website-theme`. Cette [commande](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) consulte votre répertoire local et télécharge automatiquement les changements suivants vers votre compte HubSpot lors de l'enregistrement des fichiers. **6. Ajouter un champ de thème** Maintenant que nous sommes face à des modifications locales, ajoutez un nouveau champ de thème : * Ouvrez le fichier `fields.json` dans votre éditeur. Ce fichier contrôle les champs disponibles dans la barre latérale de l'éditeur de thème. Nous allons ajouter un nouveau [champ](/docs/cms/start-building/building-blocks/overview#fields-json) pour spécifier la hauteur du pied de page. * Vers le bas du fichier, localisez le groupe `footer`. * Copiez le code ci-dessous et collez le JSON dans le fichier au-dessus du premier élément du tableau enfant pour le groupe footer. ```json theme={null} // fields.json { "id" : "", "name" : "height", "label" : "Footer height", "required" : false, "locked" : false, "display" : "text", "step" : 1, "type" : "number", "min" : 10, "max" : 900, "help_text":"This footer will expand in height to accomodate any content added to the footer. You are setting the minimum height in px", "default" : 100 }, ``` * Enregistrez `fields.json` et actualisez l'aperçu du thème dans HubSpot. Votre nouveau champ devrait s'afficher dans la barre latérale de gauche. **7. Référencer le champ dans votre CSS** * Dans votre éditeur de code, ouvrez le fichier `theme-overrides.css`. Localisez ensuite le sélecteur CSS de `.footer`. Nous allons maintenant ajouter une `min-height` à ce sélecteur. * Pour accéder à une valeur dans un thème, utilisez l'objet `theme`. Par exemple, vous pouvez utiliser `{{ theme.footer.height }}` pour accéder à la valeur de hauteur définie dans votre champ de hauteur. * Remplacez la déclaration `.footer` dans theme-overrides.css par la suivante : ```css theme={null} .footer { background-color: {{ footer_bg_color }}; min-height: {{theme.footer.height}}px; } ``` * Enregistrez `theme-overrides.css` pour le télécharger sur votre compte HubSpot. **8. Tester les modifications** Revenez à l'éditeur de thème et actualisez la page pour voir votre nouveau champ apparaître sous le pied de page. Mettez à jour la valeur de la hauteur pour qu'elle soit immédiatement reflétée dans l'aperçu. Il peut être judicieux de définir une couleur d'arrière-plan pour le pied de page afin que vous puissiez voir la modification plus facilement. ## Étapes suivantes Maintenant que vous avez créé et mis à jour votre thème, vous pouvez créer d'autres champs de thème et les personnaliser pour vos projets. Pour plus d'options de personnalisation, consultez la [présentation des thèmes](/docs/cms/start-building/building-blocks/overview). Pendant la création de votre thème, il peut être utile de consulter les bonnes pratiques en matière d'[optimisation des sites web sur le CMS Hub](/docs/cms/best-practices/testing-staging-performance/speed). HubSpot compte plusieurs [thèmes par défaut](/docs/cms/start-building/building-blocks/themes/default-themes) qui sont proposés avec CMS Hub. Ces thèmes peuvent être consultés, clonés et mis à jour afin de savoir comment utiliser un thème dans une situation concrète. Une fois que vous maîtrisez les thèmes, [découvrez comment créer votre premier module personnalisé](/docs/cms/start-building/building-blocks/modules/overview). # Le boilerplate du CMS hub de HubSpot Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate Le boilerplate du CMS hub de HubSpot illustre les meilleures pratiques et aide les développeurs à créer rapidement un site web sur le CMS Hub. [Le boilerplate du CMS hub de HubSpot sert](https://github.com/HubSpot/cms-theme-boilerplate) de point de départ pour la mise en place et le fonctionnement d'un site web sur le CMS Hub, tout en illustrant certaines bonnes pratiques en la matière. Le boilerplate est développé et activement maintenu par HubSpot, mais il s'agit également d'un projet GitHub open source où chacun peut suggérer des modifications ou s'en inspirer pour son propre usage. Si vous n'avez jamais utilisé le CMS Hub et que vous souhaitez démarrer un nouveau projet sur la base du boilerplate, suivez le [guide de démarrage rapide du développement sur le CMS Hub](/docs/cms/start-building/introduction/classic-hubl-quickstart). [Visionnez une démo en direct du boilerplate](https://boilerplate.hubspotcms.com/). [Watch](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FHubSpot%2Fcms-theme-boilerplate%2Fsubscription) [Fork](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FHubSpot%2Fcms-theme-boilerplate%2Ffork) [Star](https://github.com/HubSpot/cms-theme-boilerplate) ## Structure du Boilerplate du CMS Hub Vous pouvez travailler avec le boilerplate à l'aide d'[outils de développement locaux](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli) ou directement dans le [Gestionnaire de conception.](https://knowledge.hubspot.com/cos-general/get-started-with-the-design-manager) Ce boilerplate utilise des références de chemin d'accès relatives pour toutes les ressources, ce qui permet de l'adapter facilement à votre projet, quel qu'il soit. Cela permet également de rendre le boilerplate complètement transférable entre les comptes de la plateforme HubSpot. Vous trouverez ci-dessous une capture d'écran de la structure du dossier des ressources du boilerplate. Le boilerplate répartit ses ressources dans plusieurs répertoires pour les retrouver facilement. ![Structure des dossiers du Boilerplate du CMS Hub](https://cdn2.hubspot.net/hubfs/53/5Cdocs/boilerplate/boilerplate-structure-tree-view-4.png) La structure sous-jacente du boilerplate du CMS Hub s'articule autour d'une [mise en page de base commune](https://github.com/HubSpot/cms-theme-boilerplate/blob/main/src/templates/layouts/base.html), située dans le dossier **modèles > mises en page**, qui est ensuite étendue avec la balise `{% extends %}` et en faisant référence au bloc `{% block body %}` pour son contenu principal. Un exemple de l'utilisation de la balise extend et des blocs peut être visualisé dans [n'importe quel fichier HTML du répertoire des modèles.](https://github.com/HubSpot/cms-theme-boilerplate/tree/main/src/templates) Découvrez-en davantage sur les [blocs et les extensions](/docs/cms/reference/hubl/overview#blocks-and-extends). Il s'agit d'une méthode courante de développement sur les systèmes CMS où vous disposez d'un modèle de base (parfois appelé modèle principal/parent) qui contient tous les principaux éléments structurels communs du contenu de votre site. Ces éléments de contenu se trouvent habituellement à l'intérieur de l'élément `<head>` sur votre site, comme les méta-propriétés communes (ex. : Title et Meta Description), les liens Favicon, les liens CSS et les scripts tiers. ```hubl theme={null} <!doctype html> <html lang="{{ html_lang }}" {{ html_lang_dir }}> <head> <meta charset="utf-8"> <title>{{ page_meta.html_title }} {% if site_settings.favicon_src %}{% endif %} {{ require_css(get_asset_url("../../css/layout.css")) }} {{ require_css(get_asset_url("../../css/main.css")) }} {{ require_css("https://fonts.googleapis.com/css?family=Merriweather:400,700|Lato:400,700&display=swap") }} {{ require_js(get_asset_url("../../js/main.js")) }} {{ standard_header_includes }}
        {% block header %} {% global_partial path="../partials/header.html" %} {% endblock header %} {% block body %} {% endblock body %} {% global_partial path="../partials/footer.html" %}
        {{ standard_footer_includes }} ``` À l'intérieur de cette mise en page de base, il y a également des appels aux partials globaux d'en-tête et de pied de page. Cela permet de conserver le code de ces partials dans des fichiers distincts pour des raisons de modularité et, comme il s'agit de partials globaux, ils peuvent être facilement modifiés par vos créateurs de contenu à l'aide de l'[éditeur de contenu global](/docs/cms/start-building/building-blocks/global-content) de HubSpot. Pour en savoir plus sur les ressources incluses dans le modèle, [consultez le wiki du boilerplate sur GitHub](https://github.com/HubSpot/cms-theme-boilerplate/wiki). ## jQuery **Le boilerplate du thème HubSpot n'a pas besoin de jQuery pour pouvoir fonctionner**. Pour les anciens comptes HubSpot, jQuery est chargé par défaut. Sur les comptes HubSpot les plus récents, jQuery est désactivé par défaut. Historiquement, les scripts HubSpot avaient besoin de jQuery pour pouvoir fonctionner correctement. Le paramètre de domaine était donc là pour assurer la compatibilité. Les scripts HubSpot n'utilisent plus jQuery, car il n'est pas nécessaire et qu'il existe de meilleures façons pour les développeurs d'inclure des bibliothèques qui fonctionnent également avec le contrôle de la source. Il est conseillé de désactiver les paramètres jQuery pour les nouveaux sites web. Faites attention si vous désactivez jQuery sur un domaine qui a un site web existant : toutes les pages de destination ou les pages web existantes que vous pouvez avoir pourraient ne plus fonctionner si elles sont liées à jQuery. **Si vous souhaitez utiliser jQuery sur votre nouveau site web, il est recommandé d'utiliser la dernière version de jQuery.** Il y a deux façons simples de le faire : * Téléchargez la dernière version de jQuery dans le système de fichiers de votre développeur et utilisez la commande [`require_js`](/docs/cms/reference/hubl/functions#require-js) pour le charger où et quand vous en avez besoin. * Utilisez un réseau de diffusion de contenu de confiance et [`require_js`](/docs/cms/reference/hubl/functions#require-js) pour charger jQuery où et quand vous en avez besoin. ## Ressources associées * [Premiers pas avec les thèmes](/docs/cms/start-building/building-blocks/themes/getting-started) * [Comment optimiser les performances de votre site CMS Hub](/docs/cms/best-practices/testing-staging-performance/speed) * [Premiers pas avec l'accessibilité](/docs/cms/best-practices/improve-existing-sites/accessibility) # Getting started with the CMS legacy quote theme Source: https://developers.hubspot.fr/docs/cms/start-building/building-blocks/themes/legacy-quote-themes # Créer des pages dynamiques à l'aide d'objets CRM Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/crm-data-in-cms-pages # Objets CRM dans les pages CMS Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/crm-objects Les objets CRM peuvent être demandés et rendus sur le contenu hébergé par HubSpot, ce qui permet de partager les données entre vos opérations commerciales, votre site Web et vos e-mails. 'Les objets CRM peuvent être demandés et rendus sur le contenu hébergé par HubSpot, ce qui permet de partager les données entre vos opérations commerciales, votre site Web et vos e-mails.'; Vous pouvez interroger les objets CRM pour utiliser les données des enregistrements de l'objet sur le contenu hébergé par HubSpot, ce qui permet de partager les données entre vos opérations commerciales, votre site Web et vos e-mails. En utilisant les fonction HubL [`crm_object`](/docs/cms/reference/hubl/functions#crm-object), [`crm_objects`](/docs/cms/reference/hubl/functions#crm-objects) et [`crm_associations`](/docs/cms/reference/hubl/functions#crm-associations), vous pouvez afficher et contrôler la logique basée sur les données de vos objets CRM. L'utilisation des données CRM sur votre site web signifie que vos données sur les ventes, marketing et le site web se trouvent toutes au même endroit et reflètent toujours les mêmes informations. En outre, comme vous pouvez associer des enregistrements CRM les uns aux autres, vous pouvez également intégrer les données associées dans les pages de votre site web. De même, vous pouvez [créer des ensembles de pages dynamiques qui se génèrent automatiquement à l'aide d'objets CRM ou de données HubDB](https://developers.hubspot.com/docs). Découvrez-en davantage sur la création de pages CMS basées sur les données dans le cours [CMS Data-Driven Content](https://app.hubspot.com/academy/tracks/1148948/intro) de HubSpot Academy. ### Exemple de cas d'utilisation Un exemple d'utilisation des données d'un objet CRM dans des pages est celui d'une page d'annonces immobilières. Avec un objet personnalisé appelé *propriété*, des enregistrements d'objets individuels peuvent être créés pour chaque maison qui doit être répertoriée. Les agents immobiliers peuvent ensuite ajouter des informations aux propriétés des objets afin de stocker des détails, tels que l'emplacement, le nombre de chambres et les prix demandés. Les pages du site web peuvent alors extraire les données de l'enregistrement pour chaque propriété afin de créer une page d'inscription et des pages de détails pour chaque propriété. [Consultez le répertoire GitHub](https://github.com/HubSpot/cms-custom-objects-example) pour voir l'exemple complet. Pour avoir une vue d'ensemble de cet exemple, consultez l'[enregistrement de la Journée des développeurs HubSpot 2020](https://developers.hubspot.com/community/developer-day-2020). ## Types d'objets CRM pris en charge Vous trouverez ci-dessous les types d'objets CRM dont vous pouvez tirer des données pour les pages de votre CMS. Le fait que vous puissiez utiliser les données sur toutes les pages ou uniquement sur les pages privées dépend du type d'objet. Dans les tableaux ci-dessous, découvrez les types d'objets disponibles pour le contenu du CMS ainsi que leurs noms et noms entièrement qualifiés. ### Données des objets CRM disponibles pour toutes les pages Les données des objets CRM suivants peuvent être utilisées sur n'importe quelle page du CMS. | Type d'objet | Nom de l'objet | Nom entièrement qualifié | | - | - | - | | [Produits](/docs/api-reference/crm-products-v3/guide) | `product` | `PRODUCT` | | [Événements marketing](/docs/api-reference/marketing-marketing-events-v3/guide) | `marketing_event` | `MARKETING_EVENT` | | [Objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide) | ***Content Hub** Entreprise* uniquement. Vous pouvez utiliser le [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) de l'objet ou le nom saisi au moment de la création. Par exemple, si vous créez un objet nommé `Cars`, vous ne pouvez pas le référencer avec `cars` ou `Car`. Vous devez utiliser le [nom entièrement qualifié](/docs/cms/start-building/features/data-driven-content/crm-objects#getting-a-custom-object-type-s-details) si l'objet personnalisé partage un nom avec un objet standard. Il est également fortement recommandé d'utiliser le nom entièrement qualifié si le nom de l'objet est entièrement en majuscules afin d'éviter tout conflit potentiel avec les objets standard de HubSpot. | | ### Données des objets CRM disponibles pour les pages privées Les données des objets de CRM suivants ne peuvent être utilisées que sur les pages nécessitant un [mot de passe](https://knowledge.hubspot.com/fr/website-pages/password-protect-a-page) ou une [connexion de membre.](https://knowledge.hubspot.com/fr/website-pages/require-member-registration-to-access-private-content) | Type d'objet | Nom de l'objet | Nom entièrement qualifié | | - | - | - | | [Contacts](/docs/api-reference/crm-contacts-v3/guide) | `contact` | `CONTACT` | | [Entreprises](/docs/api-reference/crm-companies-v3/guide) | `company` | `COMPANY` | | [Transactions](/docs/api-reference/crm-deals-v3/guide) | `deal` | `DEAL` | | [Tickets](/docs/api-reference/crm-tickets-v3/guide) | `ticket` | `TICKET` | | [Devis](/docs/api-reference/crm-quotes-v3/guide) | `quote` | `QUOTE` | | [Lignes de produit](/docs/api-reference/crm-line-items-v3/guide) | `line_item` | `LINE_ITEM` | ## Afficher les données d'un seul enregistrement CRM avec la fonction crm\_object Utilisez la fonction [`crm_object`](/docs/cms/reference/hubl/functions#crm-object) pour obtenir un enregistrement unique de la fonctionnalité CRM de HubSpot par requête ou par ID d'enregistrement CRM. Les enregistrements d'objets sont renvoyés sous la forme d'un dictionnaire de propriétés et de valeurs. **Entrée** ```hubl theme={null} {# Render custom object by query #} {% set event = crm_object("event", "name=Defensive Health") %} {{ event.name }} {# Render custom objects specifying the id of the object #} {% set event = crm_object("event", 289236) %} {{ event.name }} ``` **Résultat** ```html theme={null}

        Defensive Health

        Defensive Health

        ``` Si une requête renvoie une collection d'enregistrements, la fonction renvoie le premier enregistrement de la collection. ## Afficher les données de plusieurs enregistrements CRM avec la fonction crm\_objects Utilisez la fonction [`crm_objects()`](/docs/cms/reference/hubl/functions#crm-objects) pour obtenir des enregistrements CRM par type d'objet à partir de la fonctionnalité CRM de HubSpot par requête ou par ID d'enregistrement. Les enregistrements sont renvoyés sous la forme d'un dictionnaire de propriétés et de valeurs. L'enregistrement renvoyé contient une propriété `results` qui peut être mise en boucle pour afficher les informations dans les éléments de l'enregistrement. **Entrée** ```hubl theme={null} {# Render custom objects by query #} {% set events = crm_objects("event", "limit=3&type=virtual") %}

        {{events.total}} New Events:

          {% for event in events.results %}
        • Name: {{ event.name }}
        • {% endfor %}
            {# Render custom objects by ids #} {% set events = crm_objects("event", [289236,289237,289238]) %}

            {{events.total}} New Events:

              {% for event in events.results %}
            • Name: {{ event.name }}
            • {% endfor %}
                ``` **Résultat** ```html theme={null}

                3 New Events:

                • Name: Defensive Health
                • Name: Body Balance
                • Name: Happy Heart
                  • 3 New Events:

                    • Name: Defensive Health
                    • Name: Body Balance
                    • Name: Happy Heart

          ``` ## Affichage des enregistrements associés Utilisez la fonction [`crm_associations`](/docs/cms/reference/hubl/functions#crm-associations) de HubL pour obtenir une liste d'informations associées à partir de la fonctionnalité CRM de HubSpot en fonction de l'ID d'enregistrement, de la catégorie d'association et de l'ID de définition de l'association.[](#getting-a-custom-object-s-details) Les enregistrements sont renvoyés sous la forme d'un dictionnaire de propriétés et de valeurs. **Entrée** ```hubl theme={null} {% set associated_objects = crm_associations(289236, "USER_DEFINED", 3) %}

          Contacts Associated With Event

            {% for contact in associated_objects.results %}
          • Name: {{ contact.firstname }} {{ contact.lastname }}
          • {% endfor %}
          ``` **Résultat** ```html theme={null}

          Contacts Associated With Event

          • Name: Brian Halligan
          • Name: Dharmesh Shah
          • Name: Yamini Rangan

          ``` ## Obtenir les détails d'un type d'objet personnalisé Pour obtenir les éléments `name`, `id`, `fullyQualifiedName`, les ID d'association et d'autres détails d'un type d'objet personnalisé, vous pouvez effectuer une requête `GET` sur l'[API schéma d'objets CRM](https://developers.hubspot.com/docs). `fullyQualifiedName` pour les types d'objets spécifiques au compte inclut l'ID du compte HubSpot, il est donc recommandé d'éviter de l'utiliser lorsque vous développez votre code pour plusieurs comptes HubSpot. ## Champ Module d'objet CRM Pour permettre aux créateurs de contenu de sélectionner les enregistrements CRM à afficher ou d'exécuter une logique, vous pouvez construire des modules qui incluent le [champ d'objet CRM](https://developers.hubspot.fr/docs/cms/reference/fields/module-theme-fields#crm-object). Par exemple, si vous souhaitez afficher les informations d'un produit, d'un contact, d'une entreprise, d'une transaction, d'un devis, d'un ticket ou d'un objet personnalisé. ![Champ d'objet CRM](https://f.hubspotusercontent00.net/hubfs/53/CRM%20Object%20Field.png) ## Tutoriels et ressources concernant les objets CRM * [Premiers pas avec les objets personnalisés](https://developers.hubspot.com/blog/essentials-for-getting-started-with-custom-objects) * [Penser comme un architecte : créer des objets personnalisés évolutifs](https://developers.hubspot.com/blog/how-to-think-like-an-architect-by-building-scalable-custom-objects) * [Créer des pages dynamiques avec des objets de CRM](https://developers.hubspot.com/docs) # Créer des e-mails au contenu programmable Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/emails-with-programmable-content Cette fonctionnalité est actuellement en version bêta. En utilisant cette fonctionnalité, vous acceptez les [conditions d'utilisation des outils bêta destinés aux développeurs](https://legal.hubspot.com/hubspot-beta-terms). Ce guide fait référence aux fonctionnalités disponibles uniquement via cette version bêta. [Inscrivez-vous à la version bêta dans vos modèles ou modules.](https://knowledge.hubspot.com/fr/marketing-email/create-programmable-emails) Utilisez du contenu programmable pour personnaliser vos e-mails avec des données depuis votre compte HubSpot via HubL. Les sources de données que vous pouvez utiliser dans un e-mail programmable dépendent de votre abonnement HubSpot : * Si vous disposez d'un abonnement ***Marketing Hub*** *Pro*, vous pouvez utiliser des données à partir d'objets CRM standard, tels que des contacts, des entreprises et des produits. * Si vous avez un abonnement ***Marketing Hub*** *Entreprise*, vous pouvez aussi utiliser des sources de données structurées telles que les tableaux [HubDB](https://developers.hubspot.com/docs) et les [objets personnalisés](https://knowledge.hubspot.com/fr/records/use-custom-objects). Ces données peuvent être filtrées en fonction des propriétés de contact du destinataire. Par exemple, un site web d'agence immobilière peut demander à ses prospects de remplir un formulaire décrivant leurs besoins en matière de logement. La soumission de formulaire peut alors déclencher un workflow qui envoie au prospect un e-mail avec des maisons susceptibles de l'intéresser. ## Limites d'envoi d'e-mails Vous pouvez inclure les fonctions CRM HubL [crm\_object](/docs/cms/reference/hubl/functions#crm-object), [crm\_objects](/docs/cms/reference/hubl/functions#crm-objects) et [crm\_associations](/docs/cms/reference/hubl/functions#crm-associations) dans un e-mail programmable, mais tout e-mail qui inclut ces fonctions spécifiques est soumis aux limites suivantes, en fonction du nombre de destinataires à qui vous envoyez l'e-mail :
          **Nombre total de destinataires** **Nombre maximal de fonctions CRM HubL**
          500 000 1
          250 000 2
          165.000 3
          125.000 4
          100.000 5
          L'envoi d'un e-mail qui atteint ou dépasse l'une des limites ci-dessus retardera ou annulera l'envoi de votre e-mail. Outre les limites indiquées ci-dessus, tenez compte des avertissements supplémentaires énumérés ci-dessous : * Si vous clonez un e-mail programmable, il ne peut pas être envoyé tant que l'original est encore en état de traitement. Vous devez attendre au moins 1 heure entre chaque envoi d'e-mails. * Vous ne pouvez pas effectuer d'A/B testing pour un e-mail programmable comprenant une fonction HubL `crm_object`, `crm_objects`, ou `crm_associations`. Les e-mails envoyés à l'aide de ces fonctions ont des temps d'envoi beaucoup plus lents que les autres e-mails, ce qui peut produire des résultats de test inexacts. ## 1. Créer un module d'e-mail programmable Pour créer le module d'e-mail afin d'accéder à vos données HubDB ou d'objet personnalisé : * Dans votre compte HubSpot, accédez à **Marketing** > **Fichiers et modèles** > **Outils de conception**. * Dans l'angle supérieur gauche, cliquez sur **Fichier**, puis sélectionnez **Nouveau fichier**. * Dans la boîte de dialogue, sélectionnez **Module** pour le type de fichier, puis cliquez sur **Suivant**. Ensuite, sélectionnez la case à cocher **E-mails** et saisissez un **nom** pour le fichier. * Cliquez sur **Créer**. * Pour activer la messagerie programmable du module : * Dans l'inspecteur à droite, activez l'interrupteur **Activer le module pour la version bêta des e-mails programmables**. ![programmable-email-switch0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/programmable-email-switch0.png) * Vous pouvez également activer les e-mails programmables pour un modèle d'e-mail codé en ajoutant `isEnabledForEmailV3Rendering: true` en haut du fichier. ![enable-design-manager-template-for-programmable-email](https://knowledge.hubspot.com/hs-fs/hubfs/Imported%20sitepage%20images/enable-design-manager-template-for-programmable-email.png?width=510\&name=enable-design-manager-template-for-programmable-email.png) Une fois le module créé, vous ajouterez ensuite du code pour accéder aux données de votre CRM. Les exemples suivants ci-dessous montrent comment effectuer des requêtes à partir de différentes sources de données. ### Objets standard Vous pouvez utiliser les fonctions HubL telles que [crm\_object](/docs/cms/reference/hubl/functions#crm-object), [crm\_objects](/docs/cms/reference/hubl/functions#crm-objects) et [crm\_associations](/docs/cms/reference/hubl/functions#crm-associations) pour interroger des données à partir d'objets standards de votre compte, tels que des contacts, des entreprises ou des produits. Le code ci-dessous utilise la fonction HubL [`crm_object`](/docs/cms/reference/hubl/functions#crm-object) pour interroger les données d'un produit avec un ID de `2444498793` et restituer le nom, la description et le prix : ```hubl theme={null} {% set product = crm_object("product", 2444498793, "name,description,price") %}

          Name: {{ product.name }}

          Description: {{ product.description }}

          Price: {{ product.price }}

          ``` ### Objets personnalisés Si vous disposez d'un compte ***Marketing Hub** Entreprise*, vous pouvez interroger les données d'un objet personnalisé que vous avez créé. Le code ci-dessous récupère les données d'un objet personnalisé nommé *Propriété*, et renvoie les valeurs (par exemple : emplacement, prix) stockées dans les propriétés de l'objet personnalisé. Notez que l'exemple ci-dessous utilise le nom complet de l'objet personnalisé comme premier argument lors de l'appel de la [fonction HubL](/docs/cms/reference/hubl/functions#crm-objects) `crm_objects`. * Le nom complet commence par l'ID du compte HubSpot (affichant le préfixe `p`), suivi d'un tiret bas et du nom pluriel en minuscule de l'objet personnalisé (par exemple : `properties`). * Vous pouvez récupérer le `fullyQualifiedName` d'un objet en effectuant une requête `GET` auprès de [l'API schéma d'objets CRM](https://developers.hubspot.com/docs). ```hubl theme={null} {% set real_estate_listings = crm_objects("p2990812_properties", "", "listing_name,location, price, address, type") %} {% for home in real_estate_listings.results %} {{ home.address}}
          {{ home.price }}
          {{ home.name }}

          {% endfor %} ``` Si le nom de votre objet personnalisé contient des traits d'union (par exemple : *My-Custom-Object*), ses propriétés ne peuvent pas être restituées dans un e-mail programmable. Vous pouvez recréer l'objet personnalisé en omettant les traits d'union [directement dans votre compte HubSpot](https://knowledge.hubspot.com/fr/object-settings/create-custom-objects) ou vous pouvez utiliser [l'API d'objet personnalisé.](/docs/api-reference/crm-custom-objects-v3/guide) Pour filtrer les données renvoyées pour chaque destinataire, vous pouvez ajouter un paramètre `query` qui filtrera les résultats selon les propriétés de contact du destinataire. Consulter la [liste complète d'options de filtre](/docs/api-reference/cms-hubdb-v3/guide#filter-returned-rows). ```hubl theme={null} {% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&city="~contact.city"&order=listing_name" %} {% set real_estate_listings = crm_objects("p2990812_Property", query, "listing_name,location, price, address, type") %} {% for home in real_estate_listings.results %} ... {% endfor %} ``` ### HubDB Si vous disposez d'un compte ***Marketing Hub*** *Entreprise*, vous pouvez utiliser les données d'un tableau HubDB dans votre e-mail. Le code ci-dessous utilise la fonction HubL [`hubdb_table_rows`](/docs/cms/reference/hubl/functions#hubdb-table-rows) pour récupérer toutes les données du tableau. Cela répertoriera toutes les propriétés immobilières dans l'e-mail, en affichant les détails de chaque propriété, ainsi que leur image. ```hubl theme={null} {% set real_estate_listings = hubdb_table_rows(1234567) %} {% for home in real_estate_listings%} {{ home.address}}
          {{ home.price }}
          {{ home.name }}

          {% endfor %} ``` Pour filtrer les données renvoyées pour chaque destinataire, vous pouvez ajouter un paramètre `query` qui filtrera les résultats selon les propriétés de contact spécifiques. Consulter la [liste complète d'options de filtre](/docs/api-reference/cms-hubdb-v3/guide#filter-returned-rows). ```hubl theme={null} {% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&persona="~contact.hs_persona.value~"&order=listing_name" %} {% for home in real_estate_listings %} ... {% endfor %} ``` Dans l'exemple ci-dessus, la propriété de contact *Budget max* est référencée avec `contact.budget_max`, tandis que *Buyer persona* est référencée avec `contact.hs_persona.value`. En effet, *Buyer persona* est une [propriété d'énumération](https://knowledge.hubspot.com/fr/properties/property-field-types-in-hubspot), qui nécessite un élément `.value` supplémentaire pour analyser la valeur de propriété, contrairement aux autres types de propriétés. ## 2. Ajouter le module à un e-mail Une fois le module publié, vous pourrez désormais l'ajouter au corps de l'e-mail glisser-déposer. * Dans votre compte HubSpot, naviguez vers **Marketing** > **E-mail**. * Sélectionnez l'**e-mail** que vous avez créé. * Dans la barre latérale gauche, sous *Content*, cliquez sur **More**. Trouvez votre module d'e-mail programmable, puis faites-le glisser dans le corps de l'e-mail. ![drag-and-drop-email-editor-more-modules](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/drag-and-drop-email-editor-more-modules.png) Si vous avez configuré le module pour filtrer les données selon des propriétés de contact spécifiques, l'aperçu de l'e-mail apparaîtra vide. En effet, l'outil e-mail n'a pas été configuré pour prévisualiser l'e-mail d'un contact spécifique. Pour prévisualiser l'e-mail d'un contact spécifique : * En haut à droite, cliquez sur **Actions**, puis sélectionnez **Aperçu**. ![email-actions-menu0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/email-actions-menu0.png) * Sur l'écran suivant, cliquez sur le menu déroulant **Afficher en tant que contact spécifique**, puis sélectionnez un **contact**. ![preview-email-as-specific-contact0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/preview-email-as-specific-contact0.png) Vous ne devriez désormais voir que les données pertinentes pour le destinataire, filtrées par ses propriétés de contact. ![Screenshot of Email Preview](https://f.hubspotusercontent00.net/hubfs/53/preview%20window.png) Si un modèle d'e-mail ou un module contient du code personnalisé avec un HubL non résolu, un module de variable apparaîtra à sa place. ![placeholder-module-in-programmable-email](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/placeholder-module-in-programmable-email.png) Il est important de toujours disposer de données de secours à envoyer au cas où aucune ligne HubDB ou fiche d'informations d'objet personnalisé ne réponde aux critères définis. Sinon, le destinataire pourrait recevoir un e-mail vide. Cette version bêta peut entraîner des problèmes avec les modèles existants. Il est important de tester soigneusement toute modification avant de publier et d'envoyer un e-mail en direct. ## Tutoriels supplémentaires sur HubDB * [Création de pages dynamiques avec HubDB](https://developers.hubspot.com/docs) * [Joindre des tableaux HubDB](https://developers.hubspot.com/docs) * [Comment créer une page d'équipe dynamique avec HubDB](https://developers.hubspot.com/docs) * [Comment créer des pages dynamiques multi-niveaux via HubDB](https://developers.hubspot.com/docs) ## HubSpot Academy * [Utiliser HubDB et les objets personnalisés dans le CMS Hub](https://academy.hubspot.com/lessons/other_data_sources_hubdb_and_custom_objects) # Créer un site web pour une agence de recrutement à l'aide de GraphQL (BETA) Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/graphql/build-a-recruiting-agency-using-graphql # Demander des données HubSpot en utilisant GraphQL Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/graphql/query-hubspot-data-using-graphql # Utilisez les données d'une requête GraphQL dans les pages de votre site web Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/graphql/use-graphql-data-in-your-website-pages # Comment créer une page dynamique dédiée aux membres de l'équipe avec HubDB Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/hubdb/dynamic-team-member-page # Comment créer des pages dynamiques à plusieurs niveaux avec HubDB Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/hubdb/multilevel # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/hubdb/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Comment ajouter des vidéos aux pages dynamiques dans HubDB Source: https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/hubdb/video # API marketing | Formulaires Source: https://developers.hubspot.fr/docs/cms/start-building/features/forms/forms Ces points de terminaison sont utilisés pour créer et gérer des formulaires dans votre compte HubSpot. 'Ces points de terminaison sont utilisés pour créer et gérer des formulaires dans votre compte HubSpot.'; Utilisez un formulaire HubSpot pour recueillir des informations de leads sur vos visiteurs et vos contacts. Vous pouvez utiliser les points de terminaison indiqués ici pour configurer de nouveaux formulaires ou obtenir des détails sur des formulaires que vous avez précédemment créés. Si vous souhaitez envoyer des données de soumission de formulaire, vous pouvez utiliser l'option [Soumettre les données à un point de terminaison de formulaire](/docs/api-reference/legacy/forms-v3-legacy/post-submissions-v3-integration-secure-submit-portalId-formGuid). Le type du formulaire indique son objectif et est défini sur `hubspot` par défaut. Vous pouvez utiliser les valeurs suivantes pour votre `formType` : * `hubspot` : ces formulaires offrent une variété de types de champs et d'options de styles et peuvent être utilisés intégrés dans des pages HubSpot ou des pages externes. Ces formulaires peuvent être créés et modifiés à l'aide des points de terminaison décrits ici. Vous pouvez également créer ces formulaires dans votre compte HubSpot, découvrez-en davantage sur [la création de formulaires HubSpot](https://knowledge.hubspot.com/fr/forms/create-forms). * `captured` : ces formulaires correspondent aux formulaires HTML de sites web externes. Si l'outil formulaire externe à HubSpot est activé et que le formulaire contient des soumissions sur [une page suivie](https://knowledge.hubspot.com/fr/reports/install-the-hubspot-tracking-code), le formulaire est automatiquement créé dans HubSpot. En savoir plus sur [l'utilisation de formulaires externe à HubSpot](https://knowledge.hubspot.com/fr/forms/use-non-hubspot-forms). * `flow` : il s'agit de formulaires contextuels utilisables dans des pages HubSpot ou externes. En savoir plus sur [l'outil de formulaires contextuels de HubSpot](https://knowledge.hubspot.com/fr/forms/edit-and-manage-pop-up-forms-legacy) * `blog_comment` : ces formulaires sont créés automatiquement pour que les pages de blog HubSpot collectent des commentaires sur les articles de blog. En savoir plus sur la [configuration et la modération des commentaires de blog](https://knowledge.hubspot.com/fr/blog/set-up-and-moderate-your-blog-comments). # Formulaires hérités Source: https://developers.hubspot.fr/docs/cms/start-building/features/forms/legacy-forms # Connexion à Google pour les contrôle d'accès Source: https://developers.hubspot.fr/docs/cms/start-building/features/memberships/google-sign-in # Connexion à Microsoft pour les contrôles d'accès Source: https://developers.hubspot.fr/docs/cms/start-building/features/memberships/microsoft-sign-in # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/cms/start-building/features/memberships/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Comment ajouter la connexion via les réseaux sociaux pour les pages d'adhésion Source: https://developers.hubspot.fr/docs/cms/start-building/features/memberships/social # Authentification unique pour les adhésions Source: https://developers.hubspot.fr/docs/cms/start-building/features/memberships/sso # Contenu multilingue Source: https://developers.hubspot.fr/docs/cms/start-building/features/multi-language-content Les développeurs qui créent des sites web sur HubSpot peuvent facilement concevoir un site web multilingue. Certaines étapes de développement peuvent être nécessaires en fonction de vos propres activités. Toute entreprise qui opère dans plusieurs pays ou avec une clientèle qui parle plusieurs langues doit être en mesure d'échanger avec son public dans la langue de celui-ci. Avec le CMS de HubSpot, les utilisateurs peuvent [créer des variantes multilingues](https://knowledge.hubspot.com/fr/cos-general/how-to-manage-multi-language-content-with-hubspots-cos) de leur contenu qui permettent à l'utilisateur final de visualiser le contenu dans une langue qu'il comprend. HubSpot met automatiquement en place un certain nombre de facettes d'un site web multilingue pour vous. Cependant, des étapes sont indispensables pour les développeurs afin de s'assurer que leur site web est disponible en plusieurs langues. ## Fonctionnalités multilingues par défaut de HubSpot Lorsqu'une variante multilingue est créée pour une page dans HubSpot, nous procédons automatiquement aux opérations suivantes : * création d'une nouvelle entrée dans le plan du site XML indiquant le nom et l'URL de la page traduite ; * spécification de la langue du contenu dans la page `` pour les modèles créés à l'aide de la fonctionnalité de glisser-déposer ; * identification d'autres pages au sein du groupe de contenu multilingue suivant le format normalisé approprié, qui marque les autres pages comme des alternatives pour éviter les erreurs de contenu en double et identification du code [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) associé à la (aux) traduction(s) de la langue : `` ; * réécriture des liens sur les pages de langue pour accéder aux versions intra-langue de la page liée afin de s'assurer que les visiteurs restent dans la même langue et d'éviter d'avoir à mettre à jour chaque lien sur chaque traduction de page. Pour un élément donné, vous pouvez désactiver cette réécriture en ajoutant la classe "hs-skip-lang-url-rewrite" à l'élément. ### Ce que HubSpot ne fait pas Avec CMS Hub, HubSpot n'effectue pas automatiquement les opérations suivantes : * traduction du contenu de la page pour vous ; * redirection des utilisateurs vers une variante multilingue selon GeoIP ; * intégration d'un module de sélection de langue dans votre en-tête ou site web ; * définition de la langue d'une page pour les fichiers codés ; * définition de l'attribut directionnel de contenu pour les traductions dans une langue qui se lit de droite à gauche plutôt que de gauche à droite pour les fichiers codés. ## Définir des variables de langue Étant donné que les fichiers codés n'incluent pas automatiquement les déclarations de langue ou les attributs directionnels de langue de contenu, ceux-ci devront être configurés manuellement pour les modèles codés. Les variables de langue peuvent être définies en HTML ou renseignées via HubL, comme dans le [modèle du boilerplate CMS](https://github.com/HubSpot/cms-theme-boilerplate/blob/master/src/templates/layouts/base.html#L2). La définition de ces propriétés à l'aide de HubL permettra à ces données d'être renseignées dynamiquement dans le code HTML d'une page en fonction de la langue définie pour la page dans CMS Hub. ```hubl theme={null} ``` ## Utiliser des modules modifiables pour chaque page Afin de s'assurer que le contenu peut être localisé à travers chaque instance d'utilisation d'un modèle, tirez parti de [modules personnalisés](https://developers.hubspot.com/docs) à la place du contenu HTML codé en dur dès que possible. La création de modules pouvant être modifiés au niveau de la page permettra aux créateurs de contenu de définir du contenu spécifique qui apparaîtra sur chaque page sans avoir à modifier le code de modèle. Cela permet également d'utiliser un contenu unique entre des pages issues du même modèle. ## Inclure les traductions de champs dans des modules personnalisés et des thèmes Pour soutenir votre équipe internationale, vous pouvez publier des traductions des modules que vous avez créés dans HubSpot. Une fois que vous avez traduit le contenu du module et l'avez publié dans les langues des membres de votre équipe, les utilisateurs verront les libellés de champs pour ce module dans leur langue par défaut de compte. Remarque : Le contenu d'un module traduit ne sera pas traduit automatiquement ; vous devrez le faire vous-même. Vous pouvez créer des traductions de votre module dans n'importe quelle langue. Vous pouvez définir des traductions à l'aide des [outils de développement local](https://developers.hubspot.com/docs#local-module-file-structure) ou via le gestionnaire de conception. ### Développement local Pour définir des traductions à l'aide d'outils de développement local, chaque dossier de module et de thème peut contenir un dossier `_locales`, avec des sous-dossiers de paramètres de langue, chacun avec un fichier `messages.json` contenant des traductions de champ de module. ![Capture d'écran de la modification des traductions des modules localement plutôt qu'avec un code](https://newinboundblog.hubspot.com/hubfs/local%20module%20translations.png) ### Gestionnaire de conception Pour définir des traductions de champs via le [gestionnaire de conception](/docs/cms/start-building/introduction/developer-environment/design-manager), lorsque vous affichez le module, accédez à l'option « Ajouter des traductions » à droite de l'écran. Sélectionnez les langues de travail de votre équipe dans le menu déroulant. À partir de là, vous pouvez sélectionner chaque langue et spécifier les conventions d'appellation pour chaque champ dans chaque langue. ![Capture d'écran des traductions de champs dans le gestionnaire de conception](https://newinboundblog.hubspot.com/hubfs/field_translations.gif) Les traductions de champs de thème n'ont pas d'interface dans le gestionnaire de conception et doivent être modifiées via les fichiers `.json`. ## Traduire des pages système Pour configurer des traductions pour les pages système, y compris les pages de réinitialisation de mot de passe et d'abonnement aux e-mails, vous pouvez personnaliser les champs de module personnalisé et de balise HubL avec votre contenu traduit. Découvrez-en davantage sur les champs disponibles pour les [modules](/docs/cms/reference/modules/default-modules) et les [balises HubL de page système](/docs/cms/reference/hubl/tags/standard-tags#system-page-tags). ## Inclure un sélecteur de langue Pour permettre aux utilisateurs finaux de basculer entre les traductions disponibles, il est conseillé d'ajouter un module de sélection de langue à votre site. Un [exemple de la façon d'implémenter un sélecteur de langue](https://github.com/HubSpot/cms-theme-boilerplate/blob/09ad0b2c3bbc8400e64c5617268cb0504392e8e5/src/templates/partials/header.html#L26-L47) est disponible dans le [boilerplate du thème CMS](/docs/cms/start-building/building-blocks/themes/hubspot-cms-boilerplate). ```hubl theme={null} {# Header navigation row one #}
          {% if content.translated_content.values()|selectattr('published')|length || is_listing_view && group.translations %}
          {% module 'language-switcher' path='@hubspot/language_switcher', label='Language switcher', display_mode='localized' %}
          {{ locale_name(locale) }}
          {% endif %}
          {# End header navigation row one #} ``` ## Appliquer la recherche sur des sites web multilingues La [recherche de contenu](/docs/cms/start-building/building-blocks/modules/content-search) prend en charge la recherche de contenu dans les différentes langues de votre site. Le paramètre de filtre de langue peut être utilisé lorsque vous appuyez sur[/contentsearch/v2/search](/docs/api-reference/legacy/site-search-v2/search-Content) pour renvoyer des résultats dans les langues spécifiées uniquement. Ainsi, vous pouvez créer des expériences de recherche pour chaque langue de votre site web ou permettre aux visiteurs de rechercher dans plusieurs langues sur votre site web. ## Utiliser des modules et des partiels globaux Utilisez les champs de module pour restituer le texte modifiable dans les en-têtes, les pieds de page et les barres latérales. Placez ces modules dans des partiels globaux. Non seulement les créateurs de contenu bénéficieront de la facilité d'édition, mais les partiels globaux prendront en charge la [configuration de leurs paramètres pour chaque langue](https://knowledge.hubspot.com/fr/cos-general/how-to-manage-multi-language-content-with-hubspots-cos#edit-global-content-in-a-multi-language-page). ![Capture d'écran de l'éditeur de page montrant le partiel d'en-tête](https://newinboundblog.hubspot.com/hubfs/edit-multilanguage-global-content.png) # Démarrer avec les fonctions sans serveur Source: https://developers.hubspot.fr/docs/cms/start-building/features/serverless-functions/getting-started-with-serverless-functions Créez votre première fonction sans serveur sur le CMS Hub et obtenez une réponse à partir de celle-ci. 'Créez votre première fonction sans serveur sur le CMS Hub et obtenez une réponse à partir de celle-ci.'; Les fonctions sans serveur permettent d'exécuter du code JavaScript via HubSpot côté serveur, évitant ainsi toute exposition au client. Cela peut être particulièrement important pour effectuer des requêtes d'API contenant des informations sensibles, telles qu'une clé d'API ou d'autres informations d'identification. Lorsque la fonction est appelée, HubSpot l'exécute sur son back-end, ce qui signifie également que vous n'avez pas besoin de fournir vos propres serveurs back-end pour effectuer des requêtes pour votre site web sur le CMS Hub. Les fonctions sans serveur de HubSpot utilisent l'environnement d'exécution [NodeJS](https://nodejs.org/en/about/). Dans ce guide, vous allez découvrir comment créer une fonction sans serveur simple qui récupère un devis auprès d'un service tiers, puis affiche ce devis sur une page de site web. Pour créer et déployer la fonction sans serveur sur votre compte, vous utiliserez un projet développeur HubSpot. Bien que la méthode précédemment documentée de chargement de fonctions sans serveur dans le gestionnaire de conception soit toujours prise en charge, il est recommandé d'utiliser des projets développeur, car ils incluent une application privée pour une authentification plus facile tout en autorisant les dépendances tierces. Le contenu de ce guide a été mis à jour pour utiliser la méthode la plus récente. Vous pouvez trouver des informations de référence pour les fonctions sans serveur basées sur le gestionnaire de conception dans la [section de référence](/docs/cms/reference/serverless-functions/serverless-functions). Pour un aperçu de haut niveau des fonctions sans serveur, consultez la [présentation des fonctions sans serveur](https://developers.hubspot.com/docs). Vous pouvez également consulter la [chaîne YouTube des développeurs HubSpot](https://www.youtube.com/watch?v=N0arXQOyfXo) pour découvrir comment utiliser des fonctions sans serveur dans un projet CMS. ## Conditions préalables Avant de commencer ce tutoriel, vous aurez besoin des éléments suivants : * Un compte ***Content Hub** Entreprise* ou un [compte CMS sandbox développeur](https://app.hubspot.com/signup-hubspot/cms-developers). * L'[ILC HubSpot](/docs/developer-tooling/local-development/hubspot-cli/reference#install-the-cli) (dernière version recommandée), qui devra être installée et authentifiée avec le compte que vous utilisez. Pour vérifier quels comptes sont authentifiés, vous pouvez exécuter `hs accounts list`. En savoir plus sur les [premiers pas avec le développement local](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli). ## 1. Créer un projet local Commencez par créer un projet localement afin de pouvoir le générer et le déployer sur votre compte. * Dans le terminal, accédez au répertoire dans lequel vous stockerez votre projet à l'aide de la commande `cd`. ```shell theme={null} cd Documents/Dev/serverless-function-project ``` * Exécutez `hs project create` pour créer un nouveau projet. ```shell theme={null} hs project create ``` * Suivez les invites du terminal pour créer votre projet. Pour le modèle, sélectionnez **Créer un projet vide (pas de modèle)**. ![Option d'invite de terminal pour créer un projet vide sans modèle](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/terminal-select-empty-project.png) * Accédez au nouveau répertoire du projet à l'aide de la commande `cd`. Par exemple, si vous avez nommé votre projet *mon nouveau projet* : ```shell theme={null} cd my-new-project ``` ## 2. Ajouter une fonction sans serveur au projet Une fois votre projet créé, ouvrez-le dans l'éditeur de votre choix, tel que [VS Code](https://developers.hubspot.com/docs). HubSpot aura automatiquement créé un répertoire de projet avec un répertoire `src` vide et un fichier de configuration `hsproject.json`. Pour ajouter une fonction sans serveur au projet, créez un répertoire `app` dans le répertoire `src`, puis ajoutez-y les répertoires et fichiers suivants : * `app/app.json` : le fichier de configuration de l'application. * `app/app.functions` : le répertoire des fonctions sans serveur. Vous pouvez utiliser le nom de votre choix, tant qu'il se termine par `.functions`. * `app/app.functions/function.js` : le code JavaScript qui sera exécuté lors de l'appel de la fonction. * `app/app.functions/serverless.json` : le fichier de configuration de la fonction sans serveur. * `app/app.functions/package.json` : inclut les dépendances nécessaires. ![Structure du projet après l'ajout des fichiers et dossiers ci-dessus au répertoire du projet](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/project-serverless-functions-structure.png) * Copiez l'exemple de code ci-dessous dans vos fichiers locaux respectifs `app.json`, `function.js`, `serverless.json` et `package.json`. Sous chaque bloc de code `.json`, vous trouverez également un tableau contenant les définitions des champs. **app.json** ```json theme={null} { "name": "Serverless function app", "description": "This app runs a serverless function to fetch a quote using the Zen Quotes API.", "scopes": ["crm.objects.contacts.read", "crm.objects.contacts.write"], "uid": "serverless-function-app", "public": false } ``` | Champ | Type | Description | | - | - | - | | `name` | Chaîne | Le nom de l'application, qui s'affichera dans l'interface utilisateur de HubSpot. | | `description` | Chaîne | La description de l'application, qui s'affichera dans l'interface utilisateur de HubSpot. | | `scopes` | Tableau | Les domaines auxquels l'application a accès pour authentifier les requêtes avec le jeton d'accès de l'application privée. Les deux domaines ci-dessus sont les domaines minimum requis. Aucun domaine supplémentaire n'est ajouté pour ce tutoriel, car vous n'aurez pas besoin d'utiliser le jeton d'accès de l'application privée pour la requête que vous effectuerez. | | `uid` | Chaîne | L'identifiant unique de l'application. Il peut s'agir de n'importe quelle chaîne, mais doit permettre d'identifier l'application de manière significative l'application. HubSpot identifiera l'application par cet ID afin que vous puissiez modifier le `name` de l'application localement ou dans HubSpot sans supprimer les données historiques ou d'état, telles que les journaux. | | `public` | Chaîne | Défini sur `false` pour les applications privées. | **function.js** Cette fonction extraira un devis aléatoire à partir de l'[API Zen Quotes](https://zenquotes.io/). ```js theme={null} const axios = require("axios"); exports.main = async context => { try { // Make GET request to the ZenQuotes API const response = await axios.get("https://zenquotes.io/api/random"); // Extract the quote data (first item in the array) const quoteData = response.data[0]; // Log the quote and author to console console.log(`"${quoteData.q}" — ${quoteData.a}`); // Return a properly formatted response with status code and body return { statusCode: 200, body: quoteData, headers: { "Content-Type": "application/json", }, }; } catch (error) { // Handle any errors that occur during the request console.error("Error fetching quote:", error.message); // Return an error response return { statusCode: 500, body: { error: "Failed to fetch quote" }, headers: { "Content-Type": "application/json", }, }; } }; ``` **serverless.json** ```js theme={null} { "appFunctions": { "quote-function": { "file": "function.js", "secrets": [], "endpoint": { "path": "fetch-quote", "method": ["GET"] } } } } ``` | Champ | Type | Description | | - | - | - | | `quote-function` | Objet | Un objet contenant les détails de configuration de la fonction sans serveur. Cet objet peut avoir n'importe quel nom, mais il doit correspondre au nom du champ associé que vous référencez dans le champ `appFunctions` de votre fichier `serverless.json`. | | `file` | Chaîne | Nom du fichier JavaScript contenant le code de la fonction sans serveur à exécuter. | | `secrets` | Tableau | Un tableau contenant les noms des secrets que la fonction utilisera pour authentifier les requêtes. Aucun secret n'est nécessaire pour ce tutoriel. | | `endpoint` | Objet | Un objet contenant des informations sur le point de terminaison que vous pouvez utiliser pour appeler la fonction. Le champ `path` définit la dernière valeur du chemin d'accès `/hs/serverless/`, tandis que le champ `method` définit la méthode de requête. | **package.json** ```json theme={null} { "name": "example-serverless-function", "version": "0.1.0", "author": "HubSpot", "license": "MIT", "dependencies": { "@hubspot/api-client": "^7.0.1", "axios": "^0.27.2" } } ``` | Champ | Type | Description | | - | - | - | | `dependencies` | Objet | Les dépendances incluses dans la fonction sans serveur. | * Après avoir ajouté le code ci-dessus, enregistrez vos modifications. ## 3. Charger le projet sur HubSpot Une fois vos modifications enregistrées, vous pouvez maintenant charger le projet sur HubSpot pour créer et déployer l'application et la fonction sans serveur. * Dans le terminal, exécutez `hs project upload`. ```shell theme={null} hs project upload ``` * Confirmez que vous souhaitez créer le projet dans le compte. Vous n'aurez pas besoin de le confirmer une fois la création initiale terminée. Le terminal affichera l'état actuel des étapes de création et de déploiement au fur et à mesure de leur progression. * Une fois le chargement terminé, exécutez `hs project open` pour afficher le projet dans HubSpot. ```shell theme={null} hs project open ``` Dans HubSpot, vous pouvez afficher les détails du projet, créer et déployer des journaux, des journaux de fonctions sans serveur ou encore gérer le projet et l'application. En savoir plus sur [la gestion de projets dans HubSpot](https://developers.hubspot.com/docs#view-the-project-in-hubspot). ## 4. Tester la fonction Une fois la fonction sans serveur déployée, vous pouvez l'invoquer en accédant à son URL publique. Les fonctions sans serveur créées avec des projets développeur ont la structure d'URL publique suivante : `https:///hs/serverless/`. * `` : vous pouvez utiliser n'importe quel domaine connecté au compte. Par exemple, si siteweb.com et sous-domaine.brand.com sont tous deux connectés au compte, vous pouvez appeler la fonction en utilisant `https://website.com/hs/serverless/` ou `https://subdomain.brand.com/hs/serverless/`. * `` : la valeur dans le champ `path` dans `serverless.json`. Sur la base de l'exemple de code fourni dans ce tutoriel, l'URL publique pour appeler la fonction sera : `https:///hs/serverless/fetch-quote`. Dans l'URL d'appel de la fonction, le chemin du point de terminaison est global plutôt que limité à l'application ou au projet. Si vous avez des points de terminaison identiques dans plusieurs applications ou projets, la fonction de point de terminaison la plus récemment déployée sera prioritaire. Pour afficher le résultat de la fonction, accédez à cette URL dans votre navigateur, en remplaçant le domaine par l'un de vos domaines hébergés par HubSpot. Si vous n'avez pas connecté de domaine personnalisé, vous pouvez utiliser l'un des domaines par défaut fournis par HubSpot : `.hs-sites.com` (par exemple, `123456.hs-sites.com`). Votre navigateur devrait afficher les données renvoyées par l'API Zen Quotes. ![Navigateur affichant les données renvoyées par l'API Zen Quotes](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/zen-quotes-api-return.png) ## 5. Appeler la fonction depuis une page de site web Maintenant que vous avez créé la fonction sans serveur et confirmé qu'elle renvoie des données, implémentez-la dans une page pour voir les données renvoyées dans un contexte plus réaliste. Pour ce tutoriel, vous allez créer un modèle de page contenant du code JavaScript et HTML personnalisés pour exécuter la fonction et afficher les données de réponse. Tout d'abord, créez un nouveau modèle de page : * Dans votre environnement local, créez un nouveau répertoire pour contenir votre modèle de page. Pour les besoins de ce tutoriel, créez ce répertoire en dehors du répertoire de projet créé par `hs project create`. * Dans le terminal, accédez à ce répertoire à l'aide de la commande `cd`. ```shell theme={null} cd Documents/Dev/serverless-page ``` * Exécutez `hs create template "serverless-template"` pour créer un nouveau modèle nommé `serverless-template`. ```shell theme={null} hs create template "serverless-template" ``` * Sélectionnez le type de modèle de **page**. * Ouvrez le fichier de modèle de page que vous venez de créer dans votre éditeur, puis remplacez le code du boilerplate par le code ci-dessous. Veillez à remplacer `` dans la fonction l'URL de point de terminaison (`fetch('http:///hs/serverless/fetch-quote')`) par un domaine connecté à votre compte HubSpot. ```html theme={null} {{ content.html_title }} {{ standard_header_includes }} {% module "page_template_logo" path="@hubspot/logo" label="Logo" %}

          Get quote

          Click the button to fetch and display a quote.

          {{ standard_footer_includes }} ``` * Enregistrez le fichier, puis exécutez `hs upload` pour le charger dans HubSpot. Suivez les invites du terminal pour sélectionner la source locale et le chemin de destination. Pour ce didacticiel, appuyez simplement sur **Entrée** pour chaque requête afin d'utiliser les chemins par défaut. Ensuite, créez une nouvelle page à partir du modèle dans HubSpot. * Accédez au tableau de bord des pages du site web de votre compte HubSpot en exécutant la commande `hs open website-pages`. ```shell theme={null} hs open website-pages ``` Consultez la liste complète des raccourcis ouverts disponibles en exécutant `hs open --list`. * Dans votre navigateur, cliquez sur **Créer** dans l'angle supérieur droit pour créer une nouvelle page. * Dans la boîte de dialogue, sélectionnez un **domaine** à utiliser, puis attribuez un **nom de page**. Le domaine de la page devra correspondre au domaine que vous utilisez pour appeler la fonction sans serveur afin d'éviter les erreurs d'origine croisée (CORS). Vous pouvez sélectionner ce domaine dans le menu déroulant ou mettre à jour l'URL du point de terminaison dans le code de modèle de page (`fetch('http:///hs/serverless/fetch-quote')`) pour utiliser le domaine que vous sélectionnez lors de cette étape. * Cliquez sur **Créer une page**. * Sur l'écran de sélection de modèle, recherchez votre nouveau modèle. Vous pouvez utiliser le libellé ou le nom de fichier pour rechercher le modèle (par exemple, « Page d'exemple de fonction sans serveur »). Le modèle apparaîtra dans *Autres modèles*, car il ne fait pas partie d'un thème. ![Section Autres modèles montrant le modèle de page nouvellement créé](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/select-new-template.png) * Cliquez sur **Sélectionner un modèle**. * Dans l'éditeur de page, cliquez sur **Aperçu** dans l'angle supérieur droit. ![Bouton d'aperçu de l'éditeur de page](https://www.hubspot.fr/hubfs/page-preview.png) * Cliquez sur **Ouvrir dans un nouvel onglet**. Dans le nouvel onglet, vous devriez désormais pouvoir cliquer sur le bouton pour récupérer et afficher des devis. ![Exemple de bouton qui récupère et affiche des devis à partir de l'API Zen Quotes](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/quote-button-demonstration.gif) ## Étapes suivantes Maintenant que vous avez créé et implémenté une fonction sans serveur qui interagit avec une API tierce, il existe plusieurs façons de continuer à développer votre utilisation des fonctions sans serveur, telles que : * [Inclure l'authentification dans une requête](/docs/cms/reference/serverless-functions/serverless-functions-in-projects#authentication) pour effectuer des appels aux API de HubSpot ou à d'autres API authentifiées par des tiers. * Implémenter le bouton et le code JavaScript dans un module plutôt que de les coder en dur dans le modèle de page. Cela vous donnerait une option plus portable, permettant à la fonction d'être appelée à partir de n'importe quelle page à laquelle le module est ajouté. Pour ce faire, vous devez créer un module, puis ajouter le HTML dans le fichier `module.html` du module et le JavaScript dans le fichier `module.js`. **module.html** ```html theme={null}

          Get quote

          Click the button to fetch and display a quote.

          ``` **module.js** ```js theme={null} const dataButton = document.getElementById("data-button"); const dataContainer = document.getElementById("data-container"); dataButton.addEventListener("click", function (e) { console.log("Button clicked!"); // Show loading state dataContainer.innerText = "Loading..."; fetch("http://meowmix-2272014.hs-sites.com/hs/serverless/fetch-quote") .then(response => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } // Parse the JSON response return response.json(); }) .then(data => { console.log("Raw data received:", data); // Clear container dataContainer.innerText = ""; // Create the paragraph element const newDataElement = document.createElement("p"); newDataElement.innerText = `"${data.q}" — ${data.a}`; dataContainer.appendChild(newDataElement); }); }); ``` # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/cms/start-building/features/serverless-functions/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Gestionnaire de fichiers Source: https://developers.hubspot.fr/docs/cms/start-building/features/storage/file-manager Utilisez le gestionnaire de fichiers HubSpot pour héberger des images sur le réseau de diffusion de contenu de CMS Hub et permettre aux créateurs de contenu d "Utilisez le gestionnaire de fichiers HubSpot pour héberger des images sur le réseau de diffusion de contenu de CMS Hub et permettre aux créateurs de contenu d'ajouter facilement des fichiers au contenu. "; En plus du système de fichiers de développeur, le gestionnaire de fichiers HubSpot peut être utilisé pour stocker et restituer des fichiers. Les fichiers dans le gestionnaire de fichiers sont restitués sur le réseau de diffusion de contenu (CDN) mondial de HubSpot. Par défaut, tous les fichiers chargés dans le gestionnaire de fichiers sont accessibles au public et peuvent être indexés dans les moteurs de recherche. Après avoir téléchargé vos fichiers, vous pouvez [gérer les paramètres de visibilité de votre fichier](https://knowledge.hubspot.com/files/organize-edit-and-delete-files#edit-your-file-s-visibility-settings) pour empêcher l'indexation ou l'accès aux fichiers. Le gestionnaire de fichiers se trouve dans [**Marketing > Fichier et modèles > Fichiers**](https://app.hubspot.com/l/files/) dans le menu de navigation supérieur. ![](https://www.hubspot.com/hubfs/image-png-May-24-2023-05-49-31-9738-AM.png) ## Quand utiliser le gestionnaire de fichiers Le gestionnaire de fichiers est généralement utilisé pour les fichiers destinés à être utilisés dans les sélecteurs de fichiers à travers HubSpot. Par exemple, pour sélectionner une image dans un module d'image ou de texte enrichi. Avant de charger des fichiers à utiliser avec le gestionnaire de fichiers : * Certaines [limites de taille et de type de fichier](https://knowledge.hubspot.com/files/supported-file-types#files-tool) s'appliquent. Découvrez les [éléments à prendre en compte avant de charger des fichiers](https://knowledge.hubspot.com/files/upload-files-to-use-in-your-hubspot-content#before-you-get-started) dans le gestionnaire de fichiers. * Les fichiers téléchargés dans le gestionnaire de fichiers ne peuvent pas être modifiés dans l'application HubSpot, à l'exception de modifications mineures pour des fichiers d'image. * Si vous avez l'intention de modifier des fichiers textuels, ces derniers doivent être stockés dans le gestionnaire de conception. * Les fichiers de texte téléchargés dans le gestionnaire de fichiers ne seront en aucune manière minimisés ou modifiés. Pour profiter de la [minimisation JavaScript](https://developers.hubspot.com/docs#javascript-minification) ainsi que de la [minimisation et de la combinaison CSS](https://developers.hubspot.com/docs), stockez ces fichiers dans le gestionnaire de conception. ## Télécharger des fichiers dans le gestionnaire de fichiers Les fichiers peuvent être chargés dans le gestionnaire de fichiers via les options suivantes : * Pour charger des fichiers directement dans HubSpot, découvrez comment [charger des fichiers dans le gestionnaire de fichiers](https://knowledge.hubspot.com/files/upload-files-to-use-in-your-hubspot-content). * Pour télécharger des fichiers via l'[ILC de CMS, ](/docs/developer-tooling/local-development/hubspot-cli/install-the-cli)utilisez la commande `hs upload filemanager`. * Pour télécharger des fichiers à l'aide d'une API, découvrez l'[API *Charger un nouveau fichier* de HubSpot](https://developers.hubspot.com/docs#post-%2Ffiles%2Fv3%2Ffiles). Après avoir chargé vos fichiers dans le gestionnaire de fichiers, découvrez comment [organiser et gérer vos fichiers ainsi que leurs détails](https://knowledge.hubspot.com/files/organize-edit-and-delete-files). ## Utilisation des fichiers du gestionnaire Les fichiers chargés dans le gestionnaire de fichiers sont accessibles via les options suivantes : * Les fichiers téléchargés dans le gestionnaire de fichiers sont accessibles dans les différents sélecteurs de fichiers à travers HubSpot et son CMS, comme dans les modules de texte enrichi ou d'image sur les pages. * Les fichiers chargés dans le gestionnaire de fichiers sont accessibles via un lien de téléchargement direct. Découvrez comment [récupérer le lien de téléchargement direct d'un fichier](https://knowledge.hubspot.com/files/provide-a-direct-download-link-to-a-file-hosted-on-the-files-tool). ## Optimisations Les fichiers du gestionnaire de fichiers sont automatiquement [mis en cache](https://developers.hubspot.com/docs#browser-and-server-caching), [compressés et redimensionnés pour être restitués efficacement](https://developers.hubspot.com/docs#image-compression-optimization-and-automatic-image-resizing) et [accessibles dans tous vos domaines hébergés afin de réduire les demandes d'origines multiples](https://developers.hubspot.com/docs#domain-rewriting). Découvrez-en davantage sur le [réseau de diffusion de contenu, la sécurité et la performance](https://developers.hubspot.com/docs) de CMS Hub. ## Restituer des fichiers HTML et JS à partir du gestionnaire Pour les fichiers HTML et JavaScript téléchargés dans le gestionnaire de fichiers et restitués à l'aide d'un domaine HubSpot par défaut (par exemple, `f.hubspotusercontentXX.net`), utilisez le type de contenu `text/plain`. Ainsi, les navigateurs ne restitueront et n'évalueront pas le code. Si un utilisateur accède directement à un fichier HTML, le code HTML s'affichera. Pour éviter cela, vous devez restituer ces fichiers depuis l'un de vos domaines connectés plutôt que depuis un domaine par défaut HubSpot. # API du CMS | HubDB Source: https://developers.hubspot.fr/docs/cms/start-building/features/storage/hubdb Les points de terminaison HubDB sont utilisés pour obtenir et gérer des données dans vos tableaux de données HubDB. HubDB est une banque de données relationnelles, qui présente les données sous forme de lignes, de colonnes et de cellules dans un tableau, un peu comme une feuille de calcul. Les tableaux HubDB peuvent être ajoutés ou modifiés [dans votre compte HubSpot](https://developers.hubspot.com/docs#creating-your-first-table), mais vous pouvez également utiliser les points de terminaison d'API documentés ici. Pour plus d'informations sur l'utilisation des données des tableaux HubDB sur votre site web ou dans [les e-mails programmables](/docs/cms/start-building/features/data-driven-content/emails-with-programmable-content), consultez [la documentation du développeur du CMS Hub.](https://developers.hubspot.com/docs) Comme pour les pages de site web HubSpot, les tableaux HubDB prennent en charge les versions `draft` et `published`. Cela vous permet de mettre à jour les données du tableau, soit à des fins de test, soit pour permettre un processus d'approbation manuel, sans affecter les pages en ligne. Découvrez-en davantage sur les [tableaux brouillons et les tableaux en ligne](#draft-vs-live-tables). Si un tableau est défini pour être [accessible au public](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only), vous pouvez accéder à la version publiée du tableau et des lignes sans aucune authentification en spécifiant votre ID de compte HubSpot via le paramètre de requête `portalId`. Si vous effectuez une migration à partir de la v2 de l'API HubDB, découvrez les [modifications apportées à l'API (v3) actuelle](#changes-in-v3). Les points de terminaison qui prennent en charge `GET` prennent également en charge `CORS`, afin que vous puissiez accéder aux données d'un tableau côté client à l'aide de JavaScript et de votre ID de compte. D'autres méthodes et le point de terminaison *Obtenir tous les tableaux* nécessite une authentification et ne prend pas en charge `CORS`. ## Limites de taux Les requêtes d'API HubDB ont des limites de taux différentes, selon le type de demande : * Les demandes `GET` effectuées qui ne nécessitent pas d'authentification (dont les requêtes JavaScript côté client) sont limitées à 10 demandes par seconde. Ces demandes ne seront pas comptabilisées dans la limite quotidienne. * Toutes les autres demandes [utilisant l'authentification](https://developers.hubspot.com/docs) suivent les [limites standard](/docs/api-reference/overview). ## Brouillons de tableaux comparés aux tableaux en ligne Les tableaux HubDB ont à la fois des brouillons et des versions en ligne, et les versions en ligne peuvent être publiées ou non publiées. Cela vous permettra de mettre à jour les données du tableau, soit pour des aperçus de page ou des tests, soit pour permettre un processus d'approbation manuel, sans affecter les pages en ligne. Dans cette API, des points de terminaison distincts sont désignés pour les brouillons et les versions publiées d'un tableau. Par exemple, vous pouvez récupérer la version publiée d'un tableau en effectuant une demande `GET` au point de terminaison suivant : `/cms/v3/hubdb/tables/{tableIdOrName}` Aussi, pour récupérer tout contenu brouillon qui n'a pas encore été publié, vous devez ajouter `/draft` à la fin de l'URL : `/cms/v3/hubdb/tables/{tableIdOrName}/draft` Les brouillons de données peuvent être analysés puis envoyés dans HubSpot ou avec le point de terminaison `/push-live`. Les données provisoires peuvent également être supprimées via un point de terminaison `/reset`, ce qui vous permet de revenir à la version actuelle en ligne des données sans interruption. ## Créer un tableau HubDB Pour créer un tableau HubDB, effectuez une demande `POST` à `/cms/v3/hubdb/tables`. Dans le corps de la requête, spécifiez les champs obligatoires suivants : | Champ | Type | Description | Example | | - | - | - | - | | `name` | Chaîne |  : le nom interne du tableau. Ce nom ne peut pas être modifié une fois le tableau créé. Les noms peuvent uniquement contenir des minuscules, des chiffres et des tirets du bas et ne peuvent pas commencer par un chiffre. | `"name": "my_table"` | | `label` | Chaîne |  : le libellé du tableau que les utilisateurs voient lorsqu'ils modifient le tableau dans HubSpot. | `"label":"My table"` | En outre, vous pouvez spécifier les champs facultatifs suivants : | Champ | Type | Description | Example | | - | - | - | - | | `useForPages` | Booléen |  : précise si le tableau peut être utilisé pour [créer de pages dynamiques](#configuring-hubdb-tables-for-dynamic-pages). | `"useForPages": false` | | `allowPublicAPIAccess` | Booléen |  : précise si le tableau peut être lu sans autorisation. | `"allowPublicApiAccess": false` | | `allowChildTables` | Booléen |  : précise si des tableaux enfants peuvent être créés pour le tableau. | `"allowChildTables": false` | | `enableChildTablePages` | Booléen |  : précise si des [pages dynamiques à plusieurs niveaux](https://developers.hubspot.com/docs) doivent être créées en utilisant des tableaux enfants. | `"enableChildTablePages": false` | | `columns` | Objet |  : les colonnes du tableau. Découvrez-en davantage sur les propriétés de colonne dans les sections [Ajouter des colonnes de tableau](#add-table-columns). | `See "Add table columns" section below` | Sans colonnes ajoutées pour le moment, votre demande de création pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "name": "test_table", "label": "Test Table", "useForPages": false, "allowPublicApiAccess": false, "allowChildTables": true, "enableChildTablePages": false, "columns": [] } ``` ### Ajouter des colonnes de tableau Chaque colonne d'un tableau HubDB peut être définie avec les propriétés suivantes : | Champ | Type | Description | Example | | - | - | - | - | | `name` | Chaîne |  : obligatoire. Le nom interne de la colonne. Ne peut pas être modifié après la création de la colonne. | `"name": "row_name"` | | `label` | Chaîne | facultative. Le libellé de la colonne que les utilisateurs voient lorsqu'ils modifient le tableau dans HubSpot. | `"label": "Row label"` | | `type` | Chaîne |  : le type de données de la colonne. Doit être l'un des éléments suivants :
          • `TEXT` : un champ de texte.
          • `RICHTEXT` : un champ de texte qui prend en charge le formatage HTML de base. Cette option n'est pas recommandée pour le HTML brut, car elle peut avoir un impact sur la possibilité de modifier le code HTML dans HubSpot. La modification du code dans HubSpot peut également affecter la façon dont le code est affiché.
          • `NUMBER` : un champ numérique.
          • `BOOLEAN` : représenté sous la forme d'une case à cocher dans HubSpot. Utilisez `0` pour non coché et `1` pour coché.
          • `DATE` : stocke une date spécifique sous forme d'horodatage en millisecondes fixé à minuit UTC.
          • `DATETIME` : stocke une date et une heure sous forme d'horodatage en millisecondes.
          • `SELECT` : la colonne ne peut être définie que sur l'un des ensembles d'options. Consultez le champ `options` ci-dessous pour les propriétés requises.
          • `MULTISELECT` : la colonne peut être définie sur un ou plusieurs ensembles d'options. Voir le champ `options` ci-dessous pour les propriétés requises.
          • `LOCATION` : stocke un emplacement de latitude et de longitude.
          • `IMAGE` : stocke l'URL d'une image.
          • `VIDEO` : stocke l'ID du lecteur de la vidéo.
          • `FOREIGN_ID` : la colonne fera référence à une colonne d'un autre tableau HubDB. En outre, vous devez définir l'autre tableau HubDB avec les propriétés suivantes :
            • foreignTableId : l'ID de l'autre tableau HubDB.
            • foreignColumnId : l'ID de la colonne dans l'autre tableau HubDB.
          • `CURRENCY` : stocke le nombre comme une valeur monétaire.
          • `FILE` : stocke un fichier à partir du gestionnaire de fichiers. Vous devrez également inclure un champ `fileType` pour indiquer si le champ peut stocker tous les types de fichiers (`FILE`) ou seulement des types de documents tels que les PDF (`DOCUMENT`).
          | `"type": "type"` | | `options` | Objet |  : une liste d'options pour la sélection et la sélection multiple des colonnes. Chaque option est définie par un `name` avec un `type` égal à `option`. | `"option": [{"name":"Option 1", "type":"option"}, {"name": "Option 2", "type": "option"}]` | En utilisant les champs ci-dessus, votre demande de création d'un nouveau tableau HubDB pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "label": "Test Table", "name": "test_table", "columns": [ { "name": "text_column", "label": "Text Column", "archived": false, "type": "TEXT" }, { "name": "number_column", "label": "Number Column", "archived": false, "type": "NUMBER" }, { "name": "multiselect", "label": "Multi Select Column", "archived": false, "type": "multiselect", "options": [ { "name": "Option 1", "type": "option" }, { "name": "Option 2", "type": "option" } ] } ], "useForPages": true, "allowChildTables": true, "enableChildTablePages": false, "allowPublicApiAccess": false } ``` Après la création d'un tableau, des ID seront attribués aux colonnes dans l'ordre croissant. Lors de la mise à jour de colonnes existantes, incluez le champ `id` de la colonne dans l'objet d'entrée. ### Ajouter des lignes de tableau Vous pouvez ajouter des lignes manuellement via l'API ou [importer des lignes depuis un fichier CSV](#import-rows-from-csv). Pour ajouter des lignes à un tableau HubDB, effectuez une demande `POST` à `/cms/v3/hubdb/tables/{tableIdOrName}/rows`. Pour chaque ligne du tableau, vous pouvez inclure les champs suivants : | Champ | Type | Description | Example | | - | - | - | - | | `values` | Objet |  : une liste de paires clé-valeur avec le nom de la colonne et la valeur que vous souhaitez y ajouter. Si vous ne souhaitez pas définir de valeur spécifique pour une colonne, vous pouvez omettre le nom de la colonne dans la liste des paires clé-valeur. | `"values": { "text_column": "sample text", "number_column": 76}` | | `path` | Chaîne |  : pour les tableaux [activés pour les pages dynamiques](https://developers.hubspot.com/docs), `path` est le suffixe de chemin d'accès utilisé pour la page créée pour cette ligne. | `"path": "example_url_path"` | | `name` | Chaîne |  : pour les tableaux [activés pour les pages dynamiques](https://developers.hubspot.com/docs), `name` est le titre HTML utilisé pour la page créée pour cette ligne. | `"name": "Example Title"` | | `childTableId` | Nombre |  : lors de la création de [pages dynamiques à plusieurs niveaux](https://developers.hubspot.com/docs), `childTableId` spécifie l'ID de tableau enfant. | `"childTableId": 123456` | En utilisant les champs ci-dessus, votre demande pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "values": { "text_column": "sample text value", "number_column": 76, "rich_text_column": "This is a styled paragraph.", "date_column": 1591228800000, "date_time_column": 1604450520000, "boolean_column": 1, "select_column": { "name": "option 1", "type": "option" }, "multiselect_column": [ { "name": "Option 1", "type": "option" }, { "name": "Option 2", "type": "option" } ], "url_column": "https://www.hubspot.com/marketing", "video_column": 3392210008, "image_column": { "url": "https://f.hubspotusercontentqa00.net/hubfs/99992002/image3%20(1).jpg", "width": 1600, "height": 900, "type": "image" }, "foreign_id_column": [ { "id": "4364402239", "type": "foreignid" }, { "id": "4364402240", "type": "foreignid" } ] }, "path": "test_path", "name": "test_title", "childTableId": "1902373" } ``` ### Importer des lignes depuis CSV Pour importer des données dans un tableau HubDB à partir d'un fichier CSV, effectuez une demande `POST` à `/cms/v3/hubdb/tables/{tableIdOrName}/draft/import`. Le point de terminaison d'import accepte une demande `multipart/form-data` `POST` : * `config`\*\* :\*\* un ensemble d'options JSON pour l'import. * `file`\*\* :\*\* le fichier CSV que vous souhaitez importer. Dans `config`, ajoutez les champs suivants en tant que chaîne JSON : | Champ | Type | Description | Example | | - | - | - | - | | `skipRows` | Nombre |  : nombre de lignes d'en-tête à ignorer. La valeur par défaut de ce champ est `1`, en ignorant la première ligne et en la traitant comme un en-tête. Définissez ce paramètre sur `0` si toutes les lignes sont des données valides. | `"skipRows": 0` | | `separator` | Chaîne |  : délimiteur de colonne dans le fichier CSV. Défini sur `","` par défaut. | `"separator": ","` | | `idSourceColumn` | Nombre |  : l'index de la colonne dans le fichier source contenant l'ID de la ligne (`hs_id`). Si cette colonne est spécifiée, l'import mettra à jour les lignes existantes dans le tableau pour les ID de lignes correspondants à partir du fichier CSV. Il s'agit d'une option facultative que vous pouvez ignorer la première fois que vous importez des données dans un tableau. Consultez la section [Options de réinitialisation](#reset-options) ci-dessous pour plus d'informations. | `"idSourceColumn": 1` | | `resetTable` | Booléen |  : la valeur par défaut de booléen est `false`, ce qui signifie que les lignes du tableau seront mises à jour sans supprimer de lignes existantes. Si cette valeur est définie sur `true`, les lignes de la feuille de calcul remplaceront les données du tableau, ce qui signifie que toutes les lignes du tableau qui n'y figurent pas seront supprimées. Consultez la section [Options de réinitialisation](#reset-options) ci-dessous pour plus d'informations. | `"resetTable": true` | | `nameSourceColumn` | Nombre |  : pour les tableaux [activés pour les pages dynamiques](https://developers.hubspot.com/docs), `nameSourceColumn` spécifie la colonne du fichier CSV qui contient le `name` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"nameSourcecolumn": 5` | | `pathSourceColumn` | Nombre |  : pour les tableaux [activés pour les pages dynamiques](https://developers.hubspot.com/docs), `pathSourceColumn` spécifie la colonne du fichier CSV qui contient le `path` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"pathSourcecolumn": 6` | | `childTableSourceColumn` | Nombre |  : spécifie la colonne du fichier CSV qui contient le `childTableId` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"childTableSourcecolumn": 3` | | `columnMappings` | Tableau |  : une liste des mappages entre les colonnes du fichier source et les colonnes du tableau HubDB de destination. Chaque mappage doit avoir le format suivant : `{"source":1,"target”:"columnIdOrName"}`
          • **source :** l'index des colonnes dans le fichier source. Par exemple, `2` pour la deuxième colonne.
          • **cible :** l'ID ou le nom de la colonne du tableau HubDB. Vous pouvez obtenir l'ID ou le nom d'une colonne en [obtenant les détails du tableau](#retrieve-hubdb-data).
          Si votre fichier contient une colonne `hs_id`, vous ne devez pas l'inclure dans `columnMappings`. Incluez-le à la place en tant que `idSourceColumn` mettre à jour les lignes existantes. | `"columnMappings": [{"source":1, "target": 2}, {"source": 2, "target": "column_name"}]` | | `primaryKeyColumn` | Chaîne |  : le nom d'une colonne dans le tableau HubDB cible qui sera utilisée pour la déduplication. L'ID de la colonne ne peut pas être utilisé pour ce champ. | `"primaryKeyColumn": "column_name"` | | `encoding` | Chaîne |  : le type d'encodage du fichier. Par exemple : `utf-8`, `ascii`, `iso-8859-2`, `iso-8859-5`, `iso-2022-jp`, `windows-1252`. | `"encoding": "utf-8"` | | `format` | Chaîne |  : seul le format CSV est pris en charge. | `"format": "csv"` | En utilisant le tableau ci-dessus, votre `config` JSON pourrait ressembler à ce qui suit : ```json theme={null} // Example config JSON { "skipRows": 1, "separator": ",", "idSourceColumn": 1, "resetTable": false, "columnMappings": [ { "target": 1, "source": 2 }, { "target": 2, "source": "zip_code" } ], "primaryKeyColumn": "name", "encoding": "utf-8", "format": "csv" } ``` Si vous utilisez cURL, votre commande peut ressembler à ce qui suit : ```shell theme={null} curl -L -X POST 'https://api.hubspotqa.com/hubdb/api/v2/tables/xxxxxx/import?portalId=xxxxxxx' \ -H 'Content-Type: multipart/form-data' \ -F 'config="{\"skipRows\":1,\"format\":\"csv\",\"separator\":\",\",\"encoding\":\"iso-8859-1\",\"columnMappings\":[{\"target\":1,\"source\":7},{\"target\":3,\"source\":8}],\"idSourceColumn\":1,\"pathSourceColumn\":null,\"nameSourceColumn\":null,\"childTableSourceColumn\":null,\"resetTable\":true}"' \ -F 'file=@"/Users/xxxxxxxxxxxxx/Downloads/filename.csv"' ``` ### Formatage de la date Plusieurs formats peuvent être utilisés lors de l'import de données dans une colonne de type date. **Entiers** * `yyyy/mm/dd` * `yyyy/mm/dd` * `mm/dd/yyyy` * `mm/dd/yy` Ces formats exigent que le mois précède le jour (c'est-à-dire que `dd/mm/yy` n'est pas accepté). Les entiers peuvent être séparés par des traits d'union (`-`) ou des barres obliques (`/`). **Dates détendues** Vous pouvez également importer des formats de date moins standardisés que les dates basées sur des entiers. Par exemple : \*\* * `The 1st of March in the year 2022` * `Fri Mar 4 2022` * `March 4th '22` **Dates relatives** HubSpot analysera les formats de date suivants par rapport au jour en cours : \*\* * `next Thursday` * `Today` * `tomorrow` * `3 days from now` ### Réinitialiser les options Lorsque vous importez des données depuis un fichier CSV dans un tableau HubDB, vous pouvez définir le champ `resetTable` sur `true` ou `false` (par défaut) pour gérer le remplacement des données de ligne HubDB. * Si `resetTable` est défini sur `true` : * Si les lignes du fichier CSV ne disposent pas d'une colonne ID de ligne (si `hs_id` ou l'ID de ligne est spécifié comme `0`, ces lignes seront insérées avec les nouveaux ID de lignes générés. * Si les ID de ligne du fichier CSV existent déjà dans le tableau cible, les lignes existantes du tableau seront mises à jour avec les nouvelles valeurs du fichier d'entrée. * Si le tableau contient des lignes, mais que le fichier CSV d'entrée ne contient pas ces ID de ligne, ces lignes seront supprimées du tableau cible. * Si les ID de lignes du fichier CSV d'entrée n'existent pas dans le tableau cible, ces lignes seront insérées avec les nouveaux ID de lignes générés et les ID de lignes donnés dans le fichier d'entrée seront ignorés. * Si le fichier CSV d'entrée ne contient pas du tout la colonne ID de ligne, toutes les lignes seront supprimées du tableau cible et les lignes du fichier d'entrée seront insérées avec les nouveaux ID de lignes générés. * Si `resetTable` est défini sur `false` (valeur par défaut) : * Si les ID de ligne du fichier CSV existent déjà dans le tableau cible, les lignes existantes du tableau seront mises à jour avec les nouvelles valeurs du fichier d'entrée. * Si le tableau contient des lignes, mais que le fichier CSV d'entrée ne contient pas ces ID de ligne, ces lignes ne seront *pas* supprimées du tableau cible et ces lignes resteront inchangées. * Si les ID de lignes du fichier CSV d'entrée n'existent pas dans le tableau cible, ces lignes seront insérées avec les nouveaux ID de lignes générés et les ID de lignes donnés dans le fichier d'entrée seront ignorés. * Si les lignes du fichier CSV ne contiennent pas de colonne ID de ligne ou si l'ID de ligne est défini comme `0`, ces lignes seront insérées avec les nouveaux ID de lignes générés. ## Récupérer les données HubDB Il existe plusieurs façons de récupérer des données HubDB, selon que vous recherchez les détails du tableau ou les lignes d'un tableau : * Pour récupérer les détails de tous les tableaux publiés, effectuez une demande `GET` à `/cms/v3/hubdb/tables`. * Pour récupérer les détails d'un tableau publié spécifique, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}`. * Pour récupérer toutes les lignes d'un tableau spécifique, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}/rows`. * Pour récupérer une ligne spécifique d'un tableau, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}/rows/{rowId}`. Lorsque vous récupérez des données de ligne, vous pouvez filtrer et trier davantage les résultats. Si un tableau est défini pour être [accessible au public](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only), vous pouvez accéder à la version publiée du tableau et des lignes sans aucune authentification en spécifiant votre ID de compte HubSpot via le paramètre de requête `portalId`. ### Filtrer les lignes renvoyées Lors de la récupération des données de tableau HubDB, vous pouvez appliquer des filtres comme paramètres de requête pour recevoir des données spécifiques. Les paramètres de requête de filtre sont construits comme suit : `columnName__operator`. Par exemple, si vous disposez d'une colonne numérique nommée *bar*, vous pouvez filtrer les résultats pour n'inclure que les lignes où *bar* est supérieur à 10 : `&bar__gt=10`. Tous les filtres sont associés sous forme de ET (les filtres OU ne sont pas pris en charge actuellement). Lors du filtrage, tenez compte des informations suivantes : * Lorsque vous transmettez des valeurs pour des colonnes `multiselect`, les valeurs doivent être séparées par des virgules (par exemple : `multiselect_column__contains=1,2`). * Pour les filtres `datetime`, vous pouvez utiliser des dates relatives à la place des horodatages afin de spécifier une valeur relative à l'heure actuelle. Par exemple, `-3h` correspondrait à l'horodatage de 3 heures avant le moment présent, alors que `10s` correspondrait à 10 secondes dans le futur. Les unités de temps prises en charge sont ms (millisecondes), s (secondes), m (minutes), h (heures), j (jours). L'heure actuelle peut être utilisée en spécifiant une valeur zéro : 0 s * Pour les besoins de ces filtres, la colonne intégrée `hs_id` est une colonne `number`, la colonne `hs_created_at` est une colonne `datetime`, et les colonnes `hs_path` et `hs_name` sont des colonnes `text`. Découvrez ci-dessous quels opérateurs peuvent être appliqués à quels types de colonnes : | Opérateur | Nom | Description | | - | - | - | | `eq (or none)` | Égaux |  : tous les types de colonnes. Ce filtre est appliqué si aucun opérateur n'est utilisé. Lorsqu'il est utilisé avec des colonnes à sélection multiple, renvoie des lignes qui correspondent exactement aux valeurs fournies. | | `ne` | N'est pas égal à |  : tous les types de colonnes. | | `contains` | Contient |  : texte, texte enrichi et sélection multiple. Lorsqu'utilisé avec des colonnes à sélection multiple, renvoie les lignes qui contiennent toutes les valeurs fournies. Ce filtre prend en compte la casse. | | `lt` | Inférieur à |  : nombre, date et date et heure. | | `lte` | Inférieur ou égal à |  : nombre, date et date et heure. | | `gt` | Supérieur à |  : nombre, date et date et heure. | | `gte` | Supérieur ou égal à |  : nombre, date et date et heure. | | `is_null` | Nul |  : tous les types de colonnes sauf booléen. Ce filtre ne nécessite pas de valeur (par exemple : `&exampleColumn__is_null=`). | | `not_null` | Non nul |  : tous les types de colonnes sauf booléen. Ce filtre ne nécessite pas de valeur (par exemple : `&exampleColumn__not_null=`). | | `like` | Comme |  : texte et texte enrichi. | | `not_like` | Différent de |  : texte et texte enrichi. | | `icontains` | Contient |  : texte et texte enrichi. Ce filtre ne prend pas en compte la casse. | | `startswith` | Commence par |  : texte et texte enrichi. | | `in` | Dans |  : nombre, sélection et sélection multiple. Renvoie les lignes où la colonne inclut au moins une des options transmises. S'il n'y a pas d'autre `sort` dans le paramètre de requête, les résultats sont triés dans l'ordre dans lequel les valeurs sont spécifiées dans l'opérateur `in`. | ### Trier les lignes renvoyées Lors de la récupération des données HubDB, vous pouvez appliquer le tri comme paramètre de demande pour déterminer l'ordre des données renvoyées. Pour trier les données, ajoutez un paramètre de demande `sort` et indiquez le nom de la colonne : `&sort=columnName` Par défaut, les données seront renvoyées dans l'ordre naturel de la colonne spécifiée. Vous pouvez inverser le tri en ajoutant un `-` à un nom de colonne : `&sort=-columnName` Vous pouvez inclure ce paramètre plusieurs fois pour trier plusieurs colonnes. En plus du tri par colonne, trois fonctions peuvent être utilisées : * **geo\_distance(location\_column\_name, latitude, longitude) :** prend le nom d'une colonne d'emplacement et des coordonnées, renvoie les lignes classées en fonction de la distance entre les valeurs de la colonne d'emplacement indiquée et les coordonnées fournies. * **longueur(column\_name) :** prend le nom d'une colonne, renvoie les lignes classées selon la longueur de la valeur de la colonne (calculée sous forme de chaîne) * **aléatoire() :** renvoie les lignes dans un ordre aléatoire. Ces fonctions prennent également en charge le classement inverse. Par exemple, le tri suivant `geo_distance` trie d'abord les éléments les plus éloignés : `sort=-geo_distance(location_column,42.37,-71.07)` ## Configurer les tableaux HubDB pour les pages dynamiques Grâce au CMS de HubSpot, vous pouvez utiliser un tableau HubDB comme source de données pour [générer des pages dynamiques](https://developers.hubspot.com/docs). Par exemple, vous pouvez créer un tableau qui contient une ligne pour chaque membre de votre équipe de direction, avec des colonnes contenant les informations que vous souhaitez afficher sur une page. Une fois que vous avez sélectionné ce tableau comme source de données dynamique pour une page, cette page génère une page de listing qui affiche toutes les lignes sous forme d'éléments récapitulatifs, ainsi que des pages distinctes pour chaque ligne, similaire à une page de listing de blog et à des pages d'articles de blog. Pour permettre la sélection d'un tableau comme source de données dans l'éditeur de contenu, vous devez définir `useForPage` sur `true`. Vous pouvez éventuellement inclure `dynamicMetaTags` pour spécifier les colonnes à utiliser pour les métadonnées de chaque page. lors de la spécification de `dynamicMetaTags`, vous devrez vous assurer que la page utilise des balises HubL `page_meta` au lieu de `content`. Découvrez-en davantage dans le [guide des pages dynamiques](https://developers.hubspot.com/docs#metadata). Par exemple, le code ci-dessous permet de créer un tableau qui peut être utilisé pour les pages dynamiques et spécifie les trois colonnes à utiliser pour les métadonnées de page. ```json theme={null} // Example POST request to create table { "name": "dynamic_page_table", "label": "Dynamic page table", "useForPages": true, "columns": [ { "name": "meta_description", "label": "Meta description", "archived": false, "type": "TEXT" }, { "name": "featured_image", "label": "Featured image", "archived": false, "type": "IMAGE" }, { "name": "canonical_url", "label": "Canonical URL", "archived": false, "type": "URL" } ], "dynamicMetaTags": { "DESCRIPTION": 1, "FEATURED_IMAGE_URL": 2, "LINK_REL_CANONICAL_URL": 3 } } ``` | Paramètre | Type | Description | | - | - | - | | `useForPages` | Booléen |  : défini sur `true` pour permettre au tableau d'être utilisé comme source de données pour les pages dynamiques. | | `dynamicMetaTags` | Objet |  : spécifie les colonnes par ID à utiliser pour les métadonnées sur chaque page dynamique. Peut contenir :
          • `DESCRIPTION`
          • `FEATURED_IMAGE_URL`
          • `LINK_REL_CANONICAL_URL`
          Pour tous les champs de métadonnées non spécifiés, les pages hériteront des valeurs respectives de leur page parent. | | `DESCRIPTION` | Nombre |  : l'ID numérique de la colonne à utiliser pour la méta-description de chaque page. | | `FEATURED_IMAGE_URL` | Nombre |  : l'ID numérique de la colonne à utiliser pour l'URL de l'image en vignette de chaque page. | | `LINK_REL_CANONICAL_URL` | Nombre |  : l'ID numérique de la colonne à utiliser pour l'URL canonique de chaque page. | ## Modifications dans la v3 * Les tableaux doivent avoir à la fois `name` et `label`. Ce nom ne peut pas être modifié une fois le tableau créé. Les noms peuvent uniquement contenir des minuscules, des chiffres et des tirets du bas et ne peuvent pas commencer par un chiffre. `name` et `label` doivent les deux être uniques dans le compte. * L'API prend en charge à la fois les tableaux `id` et `name` dans les chemins URL. * Les points de terminaison des lignes `GET` renvoient la colonne `name` au lieu de `id` dans le champ `values`. De plus, les points de terminaison de lignes `POST` / `PUT` / `PATCH` nécessitent une colonne `name` plutôt que `id` dans le champ `values`. * Les points de terminaison de mise à jour des lignes `PATCH` acceptent désormais les mises à jour plus rares, ce qui signifie que vous pouvez spécifier uniquement les valeurs de colonne que vous devez mettre à jour (alors que vous deviez spécifier toutes les valeurs de colonne dans les versions précédentes). Lorsque vous mettez à jour une colonne avec une liste de valeurs telle que la sélection multiple, vous devez spécifier la liste de toutes les valeurs. Pour supprimer la valeur d'une colonne, vous devez spécifier la colonne avec la valeur comme `null` dans la demande. * Les points de terminaison ont été remplacés par `get` / `update` / `delete` une cellule de ligne au profit des points de terminaison `PATCH` de mise à jour des lignes. * Le point de terminaison d'import prend désormais en charge un champ `idSourceColumn` facultatif avec les champs existants dans les options au format JSON. Vous pouvez utiliser ce champ pour spécifier la colonne du fichier CSV qui contient les ID de ligne. Pour importer de nouvelles lignes avec les nouvelles valeurs pour les lignes existantes, vous pouvez simplement spécifier `0` comme ID de ligne pour les nouvelles lignes et ID de lignes valides pour les colonnes existantes. Pour plus de détails, consultez la section Import ci-dessous. Vous pouvez également utiliser des noms de colonnes ou des identifiants dans le champ cible des mappages de colonnes dans les options au format JSON. * Cloner le point de terminaison nécessite un nouveau nom et un nouveau libellé. # Créez des pages basées sur la localisation avec HubDB Source: https://developers.hubspot.fr/docs/cms/start-building/features/storage/location-based-pages # Balises HubL prises en charge obsolètes Source: https://developers.hubspot.fr/docs/cms/versions-deprecations/deprecated/hubl/filters-functions Voici une liste des balises HubL prises en charge qui sont obsolètes. Bien que ces balises fonctionnent toujours comme prévu, des balises plus récentes ont été créées pour les remplacer, lesquelles sont simplifiées et optimisées. Ces nouvelles balises sont indiquées ci-dessous. Cette page est proposée à titre informatif. Voici une liste des balises HubL prises en charge qui sont obsolètes. Bien que ces balises fonctionnent toujours comme prévu, des balises plus récentes ont été créées pour les remplacer, lesquelles sont simplifiées et optimisées. Ces nouvelles balises sont indiquées ci-dessous. Cette page est proposée à titre informatif. ## Widgets personnalisés > [!WARNING] > > Cette balise a été remplacée par une [**balise de module personnalisé.**](/docs/cms/reference/hubl/tags/standard-tags#custom-modules) ## Suivez-moi Les modules Suivez-moi restituent des icônes qui renvoient à vos différents profils de réseaux sociaux. Les icônes qui s'affichent sont basées sur vos paramètres de réseaux sociaux. > [!WARNING] > > Cette balise est remplacée par le plus récent module par défaut Suivez-moi. ```text entrée.txt theme={null} {% follow_me "follow_me" %} {% follow_me "follow_us" title='Follow Us', module_title_tag="h2" %} ``` ```text résultat.txt theme={null}

          Follow Us

          ``` ## Widget global Un widget global est un widget qui peut être partagé à travers plusieurs modèles. > [!WARNING] > > La balise a été remplacée par la [balise de module personnalisé](/docs/cms/reference/hubl/tags/standard-tags#custom-modules). ```hubl theme={null} {% global_widget "facebook_fan_box" overrideable=False, label='Facebook Fan Box' %}" ``` ## Recherche Google > [!WARNING] > > La balise et les modules de recherche Google ne sont plus disponibles. Ils ont été remplacés par la propre recherche native de HubSpot. ## Curseur d'image Génère un module de curseur d'image HubSpot. Ce module de curseur est basé sur [FlexSlider](http://flexslider.woothemes.com/). Alors que vous pouvez créer un module de curseur avec la syntaxe de module HubL standard, si vous souhaitez prédéfinir des diapositives par défaut en utilisant HubL, vous devez utiliser la syntaxe de bloc. Les deux méthodes sont présentées ci-dessous. > [!WARNING] > > Cette balise a été remplacée par la [balise de galerie](/docs/cms/reference/hubl/tags/standard-tags#gallery). ```text entrée.txt theme={null} {% image_slider "image_slider" %} <-- Block syntax --> {% widget_block image_slider "crm_slider" sizing='static', only_thumbnails=False, transition='slide', caption_position='below', with_thumbnail_nav=False, lightbox=False, auto_advance=True, overrideable=True, description_text='', show_pagination=True, label='Image Slider', loop_slides=True, num_seconds=5 %} {% widget_attribute "slides" is_json=True %}[{"caption": "CRM Contacts App", "show_caption": true, "link_url": "http://www.hubspot.com/crm", "alt_text": "Screenshot of CRM Contacts", "img_src": "http://go.hubspot.com/hubfs/Contacts-View-1.png?t=1430860504240", "open_in_new_tab": true}, {"caption": "HubSpot CRM Contact Profile", "show_caption": true, "link_url": "http://www.hubspot.com/", "alt_text": "HubSpot CRM Contact Profile", "img_src": "http://cdn2.hubspot.net/hubfs/53/Contact-Profile.png?t=1430860504240", "open_in_new_tab": true}]{% end_widget_attribute %} {% end_widget_block %} ``` ```text résultat.txt theme={null}
          • Screenshot of CRM Contacts
            CRM Contacts App
          • HubSpot CRM Contact Profile
            HubSpot CRM Contact Profile
          1. 1
          2. 2
          ``` | Paramètre | Type | Description | Par défaut | | - | - | - | - | | `sizing` | Énumération |  : permet de détermine si le curseur change de taille, en fonction de la hauteur des diapositives. Les valeurs possibles sont : « statique » ou « redimensionner" | `"static"` | | `only_thumbnails` | Booléen |  : permet d'afficher les images sous forme de vignettes au lieu d'un curseur. | `False` | | `transition` | Énumération |  : permet de définir le type de transition de la diapositive. Les valeurs possibles sont : « fondu » ou « diapositive" | `"slide"` | | `caption_position` | Énumération |  : permet d'affecter le positionnement de la légende sur ou sous la diapositive. Les valeurs possibles sont « ci-dessous » ou « superposer" | `"below"` | | `with_thumbnail_nav` | Booléen |  : permet d'inclure les vignettes sous le curseur pour la navigation (only\_thumbnails pour que cette valeur soit True, la valeur doit être définie sur False) | `False` | | `lightbox` | Booléen |  : permet d'afficher l'image miniature dans la galerie lorsque vous cliquez dessus (with\_thumbnail\_nav doit être défini sur True pour que cette valeur soit True) | `False` | | `auto_advance` | Booléen |  : permet d'avancer automatiquement les diapositives après le temps défini dans num\_seconds | `False` | | `show_pagination` | Booléen |  : permet de proposer des boutons sous le curseur pour naviguer au hasard entre les diapositives. | `True` | | `label` | Chaîne |  : un libellé pour ce module, visible dans l'éditeur uniquement | `"Image Slider"` | | `loop_slides` | Booléen |  : si la valeur est définie sur True, les diapositives sont passées en boucle | `True` | | `num_seconds` | Nombre |  : le temps de pause entre les diapositives, en secondes | `5` | | `slides` | JSON |  : une liste JSON de la légende par défaut, de l'URL du lien, du texte alternatif, de l'image source et de l'ouverture ou non dans un nouvel onglet. Consultez la syntaxe de bloc ci-dessus. | | # Deprecated HubL tags Source: https://developers.hubspot.fr/docs/cms/versions-deprecations/deprecated/hubl/tags # Modules par défaut obsolètes Source: https://developers.hubspot.fr/docs/cms/versions-deprecations/deprecated/modules # Retrieve account details Source: https://developers.hubspot.fr/docs/api-reference/latest/account/account-information/get-account-details specs/2026-09/account-account-info-v2026-09.json GET /account-info/2026-09/details Récupérer des informations détaillées sur le compte associé au portail HubSpot. Ce point de terminaison fournit des informations sur le type de compte, le fuseau horaire, les paramètres de devise et l'emplacement d'hébergement des données. Il est utile pour obtenir un aperçu complet de la configuration et des paramètres du compte. > **Supported products** > **Required Scopes** # Retrieve private app daily API usage Source: https://developers.hubspot.fr/docs/api-reference/latest/account/account-information/get-usage-details specs/2026-09/account-account-info-v2026-09.json GET /account-info/2026-09/api-usage/daily/private-apps Récupérer l'utilisation quotidienne de l'API pour les applications privées du compte. Ce point de terminaison fournit des informations sur les modèles de consommation de l'API, aidant ainsi les utilisateurs à surveiller et à gérer efficacement leur utilisation de l'API. > **Supported products** > **Required Scopes** # Account information API Source: https://developers.hubspot.fr/docs/api-reference/latest/account/account-information/guide # Retrieve audit logs Source: https://developers.hubspot.fr/docs/api-reference/latest/account/audit-logs/get-audit-logs specs/2026-09/account-audit-logs-v2026-09.json GET /account-info/2026-09/activity/audit-logs Récupérez l'historique d'activité pour les actions d'utilisateurs liées à des approbations, des mises à jour de contenus, des mises à jour d'objets CRM, des activités de sécurité, etc. (Entreprise uniquement). En savoir plus sur [les activités incluses dans les exports de journaux d'audit](https://knowledge.hubspot.com/account-management/view-and-export-account-activity-history-in-a-centralized-audit-log?hubs_content=knowledge.hubspot.com/account-management/view-and-export-account-activity-history&hubs_content-cta=centralized%20audit%20log#data-included-in-the-centralized-audit-log). > **Supported products** > **Required Scopes** # Retrieve login activity Source: https://developers.hubspot.fr/docs/api-reference/latest/account/audit-logs/get-login specs/2026-09/account-audit-logs-v2026-09.json GET /account-info/2026-09/activity/login Récupérez les journaux des actions d'utilisateurs liées à [l'activité de connexion](https://knowledge.hubspot.com/account-management/view-and-export-account-activity-history#account-login-history). > **Supported products** > **Required Scopes** # Retrieve security history Source: https://developers.hubspot.fr/docs/api-reference/latest/account/audit-logs/get-security specs/2026-09/account-audit-logs-v2026-09.json GET /account-info/2026-09/activity/security Récupérez les journaux des actions d'utilisateurs liées à [l'activité de sécurité](https://knowledge.hubspot.com/account-management/view-and-export-account-activity-history#security-activity-history). > **Supported products** > **Required Scopes** # Account activity API Source: https://developers.hubspot.fr/docs/api-reference/latest/account/audit-logs/guide # Get business units for a user Source: https://developers.hubspot.fr/docs/api-reference/latest/account/brands/get-brands specs/2026-09/business-units-business-units-v2026-09.json GET /business-units/public/2026-09/business-units/user/{userId} Récupérer les marques auxquelles un utilisateur spécifique peut accéder. > **Supported products** > **Required Scopes** # Brands API Source: https://developers.hubspot.fr/docs/api-reference/latest/account/brands/guide # Retrieve IP ranges Source: https://developers.hubspot.fr/docs/api-reference/latest/account/ip-ranges/get-origins specs/2026-09/meta-origins-v2026-09.json GET /meta/network-origins/2026-09/ip-ranges Récupérer la liste des plages d'adresses IP associées aux différents services et directions. Ce point de terminaison peut être utilisé pour obtenir des informations sur les plages d'adresses IP pour des services spécifiques tels que EMAIL, API, système de noms de domaine (DNS), web_scraping et TEST_SERVICE. Les résultats peuvent être filtrés par la direction du trafic réseau, soit INGRESS ou EGRESS. > **Supported products** # HubSpot IP ranges Source: https://developers.hubspot.fr/docs/api-reference/latest/account/ip-ranges/guide # Sunsetted and deprecated APIs Source: https://developers.hubspot.fr/docs/api-reference/latest/deprecated-apis # Error handling Source: https://developers.hubspot.fr/docs/api-reference/latest/error-handling # Référence API 2026-09 Source: https://developers.hubspot.fr/docs/api-reference/latest/overview Documentation de référence pour les API HubSpot versionnées par date, introduites avec la version 2026-09. Les API 2026-09 utilisent un système de versionnement basé sur la date qui remplace les anciens chemins de version numériques (par exemple, `/crm/v3/`). Tous les points de terminaison de cette section suivent le schéma suivant : ```text theme={null} /api-name/2026-09/resource ``` Par exemple, pour récupérer tous les contacts : ```bash theme={null} GET /crm/objects/2026-09/contacts ``` Toutes les API, qu'elles soient anciennes, nouvelles ou bêta, utilisent le même chemin racine qu'auparavant : `https://api.hubapi.com/`. Ce modèle de versionnement permet à HubSpot de publier des mises à jour selon un calendrier prévisible. Lorsqu'une nouvelle version datée est publiée, la version précédente continue de fonctionner jusqu'à sa date de fin de vie, vous laissant le temps de migrer. Pour les nouvelles intégrations, utilisez toujours la dernière version datée. En savoir plus sur ce changement sur le [Journal des modifications pour les développeurs HubSpot](https://developers.hubspot.com/changelog/introducing-date-based-api-versioning). Dans la section de référence des API, utilisez le menu déroulant de versionnement dans la barre supérieure pour changer de version. S'il existe un point de terminaison équivalent à celui que vous consultez, vous y serez automatiquement redirigé. Sinon, vous arriverez sur la page d'accueil de cette version. ![Utilisation du sélecteur de version dans la documentation développeur pour explorer les versions des API HubSpot](https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/hs-docs-version-selector.png) # Retrieve simplified IP ranges Source: https://developers.hubspot.fr/docs/api-reference/latest/account/ip-ranges/get-simple specs/2026-09/meta-origins-v2026-09.json GET /meta/network-origins/2026-09/ip-ranges/simple Récupérer une liste simplifiée des plages d’adresses IP associées à des origines réseau spécifiques dans le système HubSpot. Ce point de terminaison permet de filtrer par direction et par type de service, ce qui est utile pour comprendre les configurations réseau et gérer les contrôles d’accès. > **Supported products** # Consent banner API Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/consent-banner/consent-banner-api # Implement Google Consent Mode Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/consent-banner/google-consent-mode # Create multiple exchange rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/batch/create-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/exchange-rates/batch/create Créer plusieurs taux de change en une seule demande. > **Supported products** > **Required Scopes** # Retrieve multiple rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/batch/get-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/exchange-rates/batch/read Récupérer les détails de plusieurs taux de change en une seule requête, spécifiés par leurs ID. > **Supported products** > **Required Scopes** # Update multiple exchange rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/batch/update-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/exchange-rates/batch/update Mettre à jour les taux de conversion pour plusieurs taux de change dans une opération par lot. > **Supported products** > **Required Scopes** # Add a new currency with central exchange rates. Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/central-fx-rates/create-multicurrency specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/central-fx-rates/add-currency Créez une nouvelle devise avec des taux de change centraux dans le portail. Les devises non prises en charge ne peuvent pas être ajoutées ici. > **Supported products** > **Required Scopes** # Retrieve information about the central exchange rates feature. Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/central-fx-rates/get-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/central-fx-rates/information Récupérez les détails indiquant si la fonctionnalité des taux de change centraux est activée pour le portail. > **Supported products** > **Required Scopes** # Retrieve currencies not supported by central exchange rates. Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/central-fx-rates/get-unsupported-currencies specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/central-fx-rates/unsupported-currencies Récupérez la liste des codes de devises qui ne sont pas pris en charge par les taux de change centraux. Les devises non prises en charge devront être mises à jour manuellement. > **Supported products** > **Required Scopes** # Add a new exchange rate Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/create-exchange-rate specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/exchange-rates Créer un nouveau taux de change avec le taux de conversion et les codes devises spécifiés. > **Supported products** > **Required Scopes** # Change the visibility of a specific currency pairs Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/create-update-visibility specs/2026-09/settings-multicurrency-v2026-09.json POST /settings/currencies/2026-09/exchange-rates/update-visibility Modifier les paramètres de visibilité d'une paire de devises. Cela permet de masquer ou d'afficher une paire de devises pour les utilisateurs de l'application HubSpot. > **Supported products** > **Required Scopes** # Get all current exchange rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/get-current-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/exchange-rates/current Récupérer tous les taux de change actuels pour toutes les paires de devises. > **Supported products** > **Required Scopes** # Get the details for a specific exchange rate Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/get-exchange-rate specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/exchange-rates/{exchangeRateId} Récupérer les détails d'un taux de change spécifique indiqué par son ID. > **Supported products** > **Required Scopes** # Get exchange rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/get-exchange-rates specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/exchange-rates Obtenir une liste des taux de change > **Supported products** > **Required Scopes** # Update a conversion rate Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/exchange-rates/update-exchange-rate specs/2026-09/settings-multicurrency-v2026-09.json PATCH /settings/currencies/2026-09/exchange-rates/{exchangeRateId} Mettre à jour un taux de conversion existant, spécifié par son ID. > **Supported products** > **Required Scopes** # Get the company currency Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/get-company-currency specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/company-currency Obtenir les détails de la devise de l'entreprise. La devise de l'entreprise est utilisée dans les totaux des transactions, les rapports et la devise par défaut pour les nouvelles transactions. > **Supported products** > **Required Scopes** # Get all currency codes Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/get-currency-codes specs/2026-09/settings-multicurrency-v2026-09.json GET /settings/currencies/2026-09/codes Récupère une liste de tous les codes de devises disponibles et de leurs noms. > **Supported products** > **Required Scopes** # Settings API | Currencies Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/guide # Set or update the company currency. Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/multicurrency/update-company-currency specs/2026-09/settings-multicurrency-v2026-09.json PUT /settings/currencies/2026-09/company-currency Définir ou mettre à jour la devise principale de l'entreprise. > **Supported products** > **Required Scopes** # Get a specific tax rate Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tax-rates/get-tax-rate specs/2026-09/settings-tax-rates-v2026-09.json GET /tax-rates/2026-09/tax-rates/{taxRateGroupId} Récupérer un taux d'imposition spécifique par son `taxRateGroupId`. > **Supported products** > **Required Scopes** # Get all tax rates Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tax-rates/get-tax-rates specs/2026-09/settings-tax-rates-v2026-09.json GET /tax-rates/2026-09/tax-rates Récupérer une liste paginée de tous les taux d'imposition définis dans la bibliothèque de taux d'imposition du compte. > **Supported products** > **Required Scopes** # Add Team Members Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/add-team-members specs/2026-09/settings-teams-v2026-09.json POST /settings/teams/2026-09/{teamId}/members Attribuez de nouveaux membres à une équipe spécifique dans votre compte HubSpot. Ce point de terminaison vous permet d'ajouter des utilisateurs à une équipe en spécifiant leurs identifiants d'utilisateur et leurs rôles. Il est utile pour gérer la composition des équipes et s'assurer que les bons utilisateurs ont accès aux ressources de l'équipe. > **Supported products** > **Required Scopes** # Batch assign members Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/batch/add-team-members specs/2026-09/settings-teams-v2026-09.json POST /settings/teams/2026-09/{teamId}/members/batch Attribuer plusieurs membres à une équipe spécifique en une seule requête. Ce point de terminaison permet une gestion efficace de l'appartenance aux équipes en traitant plusieurs attributions simultanément. Il est utile pour les organisations qui cherchent à rationaliser leurs processus de gestion d'équipe. > **Supported products** > **Required Scopes** # Create Team Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/create-team specs/2026-09/settings-teams-v2026-09.json POST /settings/teams/2026-09 Créer une nouvelle équipe dans votre compte HubSpot. Ce point de terminaison vous permet de définir le nom de l'équipe, l'équipe parente et les membres. Le corps de la requête doit inclure le nom de l'équipe et les membres. En cas de création réussie, la réponse inclura l'URL de la ressource d'équipe nouvellement créée. > **Supported products** > **Required Scopes** # Delete team Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/delete-team specs/2026-09/settings-teams-v2026-09.json DELETE /settings/teams/2026-09/{teamId} Supprimer une équipe spécifique de votre compte HubSpot à l’aide de son identifiant unique. Cette opération supprimera l’équipe et les données qui lui sont associées. Assurez-vous de disposer des autorisations nécessaires pour effectuer cette action. > **Supported products** > **Required Scopes** # Retrieve team Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/get-team specs/2026-09/settings-teams-v2026-09.json GET /settings/teams/2026-09/{teamId} Récupérer des informations détaillées sur une équipe spécifique de votre compte HubSpot à l'aide de son identifiant unique. Ce point de terminaison est utile pour accéder aux propriétés de l'équipe, telles que son nom et l'ID de son équipe parente, afin de gérer ou d'afficher les données relatives à l'équipe. > **Supported products** > **Required Scopes** # List members Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/get-team-members specs/2026-09/settings-teams-v2026-09.json GET /settings/teams/2026-09/{teamId}/members Récupérer une liste des membres d'une équipe spécifiée dans votre compte HubSpot. Ce point de terminaison vous permet de paginer les membres de l'équipe à l'aide des paramètres de requête « limit » et « after ». Il est utile pour gérer et visualiser les compositions et les rôles des équipes au sein de votre organisation. > **Supported products** > **Required Scopes** # List teams Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/get-teams specs/2026-09/settings-teams-v2026-09.json GET /settings/teams/2026-09 Récupérer une liste d'équipes depuis un compte HubSpot. Ce point de terminaison vous permet de paginer les équipes à l'aide des paramètres de requête « limit » et « after ». Il est utile pour obtenir un aperçu de toutes les équipes configurées dans le compte. > **Supported products** > **Required Scopes** # Settings API | Teams Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/guide # Delete member Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/remove-team-member specs/2026-09/settings-teams-v2026-09.json DELETE /settings/teams/2026-09/{teamId}/members/{userId} Supprimer un membre spécifique d'une équipe dans votre compte HubSpot. Cette opération nécessite de spécifier les identifiants de l'équipe et de l'utilisateur. Elle est utile pour gérer la composition des équipes en supprimant les utilisateurs qui n'ont plus besoin d'accéder à une équipe particulière ou d'y être associés. > **Supported products** > **Required Scopes** # Update team Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/teams/update-team specs/2026-09/settings-teams-v2026-09.json PATCH /settings/teams/2026-09/{teamId} Mettre à jour les détails d'une équipe spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de modifier les informations de l'équipe, telles que son nom ou l'ID de son équipe parente. Assurez-vous que le teamId fourni dans le chemin est correct, car il identifie l'équipe à mettre à jour. > **Supported products** > **Required Scopes** # Add privacy consent listener Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/add-privacy-consent-listener # Enable do not track Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/do-not-track # Identify a visitor Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/identify # HubSpot tracking code API Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/overview # Revoke cookie consent Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/revoke-cookie-consent # Set the current page path Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/set-path # Track custom events Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/track-event # Track a page view Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/tracking-code/track-page-view # Create a user Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/create-user specs/2026-09/settings-user-provisioning-v2026-09.json POST /settings/users/2026-09 Créer un nouvel utilisateur dans votre compte HubSpot en utilisant les détails spécifiés. Ce point de terminaison nécessite un corps de requête JSON avec des informations utilisateur telles que l'adresse e-mail, le prénom, le nom de famille, le rôle et les sièges. Un e-mail de bienvenue peut être envoyé en option au nouvel utilisateur. > **Supported products** > **Required Scopes** # Retrieves users Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/get-users specs/2026-09/settings-user-provisioning-v2026-09.json GET /settings/users/2026-09 Récupérer une liste paginée d'utilisateurs dans votre compte HubSpot. Ce point de terminaison vous permet de spécifier le nombre maximal de résultats par page et d'utiliser un curseur de pagination pour naviguer dans la liste des utilisateurs. > **Supported products** > **Required Scopes** # Settings API | User provisioning Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/guide # Retrieves the roles on an account Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/roles/get-roles specs/2026-09/settings-user-provisioning-v2026-09.json GET /settings/users/2026-09/roles Récupérez une liste des rôles d'utilisateur disponibles dans votre compte HubSpot. Ce point de terminaison fournit des informations sur les différents ensembles d'autorisations qui peuvent être attribués aux utilisateurs, ce qui est utile pour gérer l'accès et les autorisations des utilisateurs au sein du compte. > **Supported products** > **Required Scopes** # Retrieves the seats on this account Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/seats/get-seats specs/2026-09/settings-user-provisioning-v2026-09.json GET /settings/users/2026-09/seats Récupérer la liste des sièges disponibles dans le compte. Ce point de terminaison fournit des détails sur chaque siège, y compris son nom, sa description et le nombre de sièges restants. Il est utile pour gérer et examiner les attributions de sièges au sein de votre organisation. > **Supported products** > **Required Scopes** # See details about this account's teams Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/teams/get-teams specs/2026-09/settings-user-provisioning-v2026-09.json GET /settings/users/2026-09/teams Affichez les équipes pour ce compte > **Supported products** > **Required Scopes** # Removes a user Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/users/delete-user specs/2026-09/settings-user-provisioning-v2026-09.json DELETE /settings/users/2026-09/{userId} Supprime un utilisateur identifié par « userId ». « userId » désigne par défaut l'identifiant de l'utilisateur ou, optionnellement, l'e-mail comme indiqué par le paramètre de requête « IdProperty ». > **Supported products** > **Required Scopes** # Retrieves a user Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/users/get-user specs/2026-09/settings-user-provisioning-v2026-09.json GET /settings/users/2026-09/{userId} Récupère un utilisateur identifié par « userId ». « userId » désigne par défaut l'identifiant de l'utilisateur ou, optionnellement, l'e-mail comme indiqué par le paramètre de requête « IdProperty ». > **Supported products** > **Required Scopes** # Modifies a user Source: https://developers.hubspot.fr/docs/api-reference/latest/account/settings/user-provisioning/users/update-user specs/2026-09/settings-user-provisioning-v2026-09.json PUT /settings/users/2026-09/{userId} Modifie un utilisateur identifié par « userId ». « userId » désigne par défaut l'identifiant de l'utilisateur ou, optionnellement, l'e-mail comme indiqué par le paramètre de requête « IdProperty ». > **Supported products** > **Required Scopes** # App uninstalls API Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/app-uninstalls/guide # Uninstall app Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/app-uninstalls/uninstall-app specs/2026-09/crm-app-uninstalls-v2026-09.json DELETE /appinstalls/2026-09/external-install Utilisez ce point de terminaison pour désinstaller votre application du compte HubSpot d'un client. En cas de succès, ce point de terminaison renverra un 204 et le client recevra un e-mail de notification indiquant que le développeur a désinstallé l'application de son compte. > **Supported products** > **Required Scopes** # Delete an app's feature flag Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/flags/delete-feature-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json DELETE /feature-flags/2026-09/{appId}/flags/{flagName} Supprimez un indicateur de publication dans l'application. Par exemple, supprimez l'indicateur `hs-release-app-cards` une fois que tous les comptes ont été migrés. > **Supported products** > **Required Scopes** # Retrieve a feature flag Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/flags/get-feature-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json GET /feature-flags/2026-09/{appId}/flags/{flagName} Récupérez le statut actuel des indicateurs de fonctionnalités de l'application. Aucun corps de requête n'est inclus. > **Supported products** > **Required Scopes** # Retrieve an app's feature flags Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/flags/get-feature-flags specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json GET /feature-flags/2026-09/{appId}/flags/all Récupérez tous les indicateurs de fonctionnalité associés à une application spécifique dans votre compte HubSpot. Ce point de terminaison est utile pour les développeurs qui ont besoin de gérer ou d'effectuer des audits sur les indicateurs de fonctionnalité de leurs applications. Il nécessite l'ID de l'application pour identifier les indicateurs de fonctionnalité à lister. > **Supported products** > **Required Scopes** # Set an app's feature flag Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/flags/update-feature-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json PUT /feature-flags/2026-09/{appId}/flags/{flagName} Définissez un indicateur de fonctionnalité pour une application. Par exemple, faites passer le `defaultState` de l'indicateur `hs-hide-crm-cards` à `ON` pour masquer les cartes CRM des nouvelles installations. > **Supported products** > **Required Scopes** # Feature flags Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/guide # Delete an account flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/delete-portal-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json DELETE /feature-flags/2026-09/{appId}/flags/{flagName}/portals/{portalId} Supprimez un état d'indicateur au niveau du compte pour un compte HubSpot spécifique. Aucun corps de requête inclus. > **Supported products** > **Required Scopes** # Batch delete account flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/delete-portal-flag-batch specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json POST /feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete Supprimez un état d'indicateur au niveau du compte pour plusieurs comptes HubSpot à la fois. Utilisez ce point de terminaison d'API pour gérer l'exposition des indicateurs pour les groupes de comptes HubSpot. > **Supported products** > **Required Scopes** # Retrieve account flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/get-account-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json GET /feature-flags/2026-09/{appId}/flags/{flagName}/portals/{portalId} Récupérez l'état d'indicateur au niveau du compte d'un compte HubSpot spécifique. > **Supported products** > **Required Scopes** # Retrieve accounts with a set flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/get-accounts-with-flag-state specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json GET /feature-flags/2026-09/{appId}/flags/{flagName}/portals Récupérez une liste de comptes HubSpot avec un paramètre d'indicateur au niveau du compte pour l'application spécifiée. Aucun corps de requête n'est inclus. > **Supported products** > **Required Scopes** # Set an account flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/update-account-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json PUT /feature-flags/2026-09/{appId}/flags/{flagName}/portals/{portalId} Spécifiez un état d'indicateur au niveau du compte pour un compte HubSpot spécifique. > **Supported products** > **Required Scopes** # Batch set account flag state Source: https://developers.hubspot.fr/docs/api-reference/latest/app-management/feature-flags/portal-flag-states/upsert-account-flag specs/2026-09/crm-public-app-feature-flags-v3-v2026-09.json POST /feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/upsert Définissez l'état de l'indicateur de portail pour plusieurs comptes HubSpot à la fois. Utilisez ce point de terminaison d'API pour gérer l'exposition des indicateurs pour les groupes de comptes HubSpot. > **Supported products** > **Required Scopes** # Manage OAuth access tokens with the 2026-09 API Source: https://developers.hubspot.fr/docs/api-reference/latest/authentication/manage-oauth-tokens # Refresh an access token Source: https://developers.hubspot.fr/docs/api-reference/latest/authentication/oauth-tokens/refresh-oauth-token specs/2026-09/auth-oauth-v2026-09.json POST /oauth/2026-09/token Authentifie un client et renvoie des jetons d'accès et d'actualisation. > **Supported products** # Revoke an OAuth token Source: https://developers.hubspot.fr/docs/api-reference/latest/authentication/oauth-tokens/revoke-token specs/2026-09/auth-oauth-v2026-09.json POST /oauth/2026-09/token/revoke Supprime/révoque un jeton d'actualisation fourni > **Supported products** # Token introspection endpoint Source: https://developers.hubspot.fr/docs/api-reference/latest/authentication/oauth-tokens/token-introspect specs/2026-09/auth-oauth-v2026-09.json POST /oauth/2026-09/token/introspect Renvoie la validité et les métadonnées pour les jetons d'accès et d'actualisation. > **Supported products** # Create template Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/create-email-template specs/2026-09/automation-email-templates-v2026-09.json POST /automation/email-templates/2026-09 Créer un nouveau modèle d'e-mail dans votre compte HubSpot. Ce point de terminaison vous permet de définir le nom, l'objet et le corps du modèle, et de l'affecter éventuellement à un dossier. La requête doit inclure le corps et le nom du modèle. Veuillez noter que les étendues pour ces points de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Email templates Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/guide # Retrieve template Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/retrieve-email-template specs/2026-09/automation-email-templates-v2026-09.json GET /automation/email-templates/2026-09/{templateId} Récupérer un modèle d'e-mail spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux détails d'un modèle d'e-mail, ce qui peut être utile pour examiner ou gérer vos stratégies d'automatisation des e-mails. Veuillez noter que les étendues pour ces points de terminaison nécessitent un accès au niveau utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Retrieve templates Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/retrieve-email-templates specs/2026-09/automation-email-templates-v2026-09.json GET /automation/email-templates/2026-09 Récupérer une liste de modèles d’e-mail disponibles dans le compte HubSpot. Ce point de terminaison prend en charge la pagination pour naviguer à travers de grands ensembles de modèles. Utiliser ce point de terminaison pour accéder à vos modèles d’e-mail et les gérer efficacement. À noter : les étendues pour ces points de terminaison nécessitent un accès au niveau de l’utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Retrieve folders Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/retrieve-folders specs/2026-09/automation-email-templates-v2026-09.json GET /automation/email-templates/2026-09/folders Récupérer une liste des dossiers de modèles d’e-mails disponibles dans votre compte HubSpot. Ce point de terminaison prend en charge la pagination pour naviguer à travers de grands ensembles de dossiers. Utiliser ce point de terminaison pour organiser et gérer efficacement vos modèles d’e-mails. Veuillez noter que les étendues pour ces points de terminaison nécessitent un accès au niveau de l’utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Update template Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/email-templates/update-email-template specs/2026-09/automation-email-templates-v2026-09.json PATCH /automation/email-templates/2026-09/{templateId} Mettre à jour un modèle d'e-mail existant dans votre compte HubSpot. Ce point de terminaison vous permet de modifier les propriétés du modèle telles que le nom, l'objet, le corps et l'ID du dossier. Assurez-vous que l'ID du modèle fourni correspond à un modèle existant. Les étendues pour ces points de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Create sequence Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/create-sequence specs/2026-09/automation-sequences-v2026-09.json POST /automation/sequences/2026-09/serviceaccounts/sequences Créer une nouvelle séquence dans votre compte HubSpot en utilisant les paramètres et les étapes spécifiés. Ce point de terminaison vous permet de définir les propriétés de la séquence, telles que son nom, ses paramètres, ses étapes et ses dépendances, afin d'automatiser efficacement les processus. Veuillez noter que les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Delete sequence Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/delete-sequence specs/2026-09/automation-sequences-v2026-09.json DELETE /automation/sequences/2026-09/serviceaccounts/sequences/{sequenceId} Supprimer une séquence spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Cette opération supprimera la séquence et peut éventuellement annuler les inscriptions actives si spécifié. Veuillez noter que les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Enroll a contact Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/enrollment/enroll-a-contact specs/2026-09/automation-sequences-v2026-09.json POST /automation/sequences/2026-09/enrollments Inscrivez un contact à une séquence en utilisant l'ID de séquence spécifié. Cette opération nécessite que l'ID utilisateur soit fourni en tant que paramètre de requête. Le corps de la requête doit inclure l'ID du contact, l'adresse e-mail de l'expéditeur et l'ID de la séquence. Ce point de terminaison est utile pour automatiser l'inscription des contacts à des séquences prédéfinies afin de rationaliser les processus de communication et de suivi. > **Supported products** > **Required Scopes** # Enroll service account Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/enrollment/enroll-service-account specs/2026-09/automation-sequences-v2026-09.json POST /automation/sequences/2026-09/serviceaccounts/enrollments Inscrire un compte de service à une séquence en utilisant les détails d'inscription spécifiés. Ce point de terminaison est utile pour automatiser le processus d'ajout de comptes de service aux séquences, ce qui peut aider à rationaliser les workflows et à garantir des stratégies d'interaction cohérentes. Remarque : les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Retrieve enrollment details Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/enrollment/retrieve-enrollment-details specs/2026-09/automation-sequences-v2026-09.json GET /automation/sequences/2026-09/enrollments/contact/{contactId} Récupérez les détails d'inscription à la séquence pour un contact spécifique dans votre compte HubSpot. Ce point de terminaison fournit des informations sur la séquence à laquelle un contact est inscrit, y compris les dates d'inscription, ainsi que le nom et l'ID de la séquence. > **Supported products** > **Required Scopes** # Sequences API Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/guide # List sequences Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/list-sequences specs/2026-09/automation-sequences-v2026-09.json GET /automation/sequences/2026-09/serviceaccounts/sequences Récupérer une liste des séquences disponibles dans le compte de service. Ce point de terminaison prend en charge la pagination et permet de filtrer par nom de séquence. Il est utile pour obtenir un aperçu des séquences à des fins de gestion ou de reporting. Remarque : les étendues pour ce point de terminaison nécessitent un accès au niveau utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Retrieve performance Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/retrieve-performance specs/2026-09/automation-sequences-v2026-09.json GET /automation/sequences/2026-09/serviceaccounts/sequences/{sequenceId}/performance Récupérer les métriques de performance d'une séquence spécifique dans votre compte HubSpot. Ce point de terminaison fournit des informations détaillées sur l'efficacité de la séquence, y compris des métriques telles que les taux d'ouverture, de clics et de réponses. Il est utile pour analyser le succès de vos séquences au fil du temps. Veuillez noter que les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Retrieve sequence Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/retrieve-sequence specs/2026-09/automation-sequences-v2026-09.json GET /automation/sequences/2026-09/serviceaccounts/sequences/{sequenceId} Récupérer les détails d'une séquence spécifique dans votre compte HubSpot à l'aide de l'ID de séquence. Ce point de terminaison fournit des informations complètes sur la séquence, y compris ses paramètres, ses étapes et ses dépendances. Il est utile pour obtenir les configurations de séquence et comprendre la structure et les composants de la séquence. Veuillez noter que les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Update sequence Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/sequences/update-sequence specs/2026-09/automation-sequences-v2026-09.json PUT /automation/sequences/2026-09/serviceaccounts/sequences/{sequenceId} Mettre à jour une séquence existante dans votre compte HubSpot à l'aide de son identifiant unique. Ce point de terminaison vous permet de modifier les paramètres, les étapes et les dépendances de la séquence. Assurez-vous que le « sequenceId » fourni dans le chemin est valide et correspond à la séquence que vous souhaitez mettre à jour. Veuillez noter que les étendues pour ce point de terminaison nécessitent un accès au niveau de l'utilisateur et ne fonctionneront pas pour les applications existantes avec un accès au niveau du portail. > **Supported products** > **Required Scopes** # Complete a batch of callbacks Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/callbacks/batch-complete-callbacks specs/2026-09/automation-actions-v4-v2026-09.json POST /automation/actions/callbacks/2026-09/complete Terminer un lot d'exécutions d'actions bloquées. > **Supported products** > **Required Scopes** # Complete a callback Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/callbacks/complete-callback specs/2026-09/automation-actions-v4-v2026-09.json POST /automation/actions/callbacks/2026-09/{callbackId}/complete Terminer l'exécution d'une action bloquée spécifique par ID. > **Supported products** > **Required Scopes** # Build custom workflow actions Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/custom-action-guide # Custom workflow actions reference Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/custom-action-reference # Custom code actions Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/custom-code-actions # Create a new custom action definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/create-action-definition specs/2026-09/automation-actions-v4-v2026-09.json POST /automation/actions/2026-09/{appId} Créez une nouvelle action de workflow personnalisée. > **Supported products** > **Required Scopes** # Delete an action definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/delete-action-definition specs/2026-09/automation-actions-v4-v2026-09.json DELETE /automation/actions/2026-09/{appId}/{definitionId} Supprimez une définition d'extension par ID. > **Supported products** > **Required Scopes** # Retrieve a custom action definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/get-action-definition specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId} Récupérez une définition d'action de workflow personnalisée par ID. > **Supported products** > **Required Scopes** # Retrieve custom action definitions Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/get-action-definitions specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId} Récupérez les définitions d'actions de workflows personnalisées par ID d'application. > **Supported products** > **Required Scopes** # Set the object requirement for a custom action definition. Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/set-object-requirement specs/2026-09/automation-actions-v4-v2026-09.json POST /automation/actions/2026-09/{appId}/{definitionId}/requires-object Déterminer si une définition d'action personnalisée requiert un objet. > **Supported products** > **Required Scopes** # Update an existing action definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/definitions/update-action-definition specs/2026-09/automation-actions-v4-v2026-09.json PATCH /automation/actions/2026-09/{appId}/{definitionId} Mettre à jour une définition d'action existante par ID. > **Supported products** > **Required Scopes** # Insert a function for a definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/add-function specs/2026-09/automation-actions-v4-v2026-09.json PUT /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType} Ajoutez une fonction pour une définition donnée. > **Supported products** > **Required Scopes** # Archive a function for a definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/archive-function specs/2026-09/automation-actions-v4-v2026-09.json DELETE /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType}/{functionId} Archivez une fonction pour une définition spécifique. > **Supported products** > **Required Scopes** # Delete a function for a definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/delete-function specs/2026-09/automation-actions-v4-v2026-09.json DELETE /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType} Supprimez une fonction dans une définition donnée. > **Supported products** > **Required Scopes** # Retrieve a function from a given definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/get-function specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType}/{functionId} Récupérez une fonction spécifique d'une définition donnée. > **Supported products** > **Required Scopes** # Retrieve functions for a given definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/get-functions specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId}/functions Récupérez toutes les fonctions incluses dans une définition. > **Supported products** > **Required Scopes** # Retrieve functions by a type for a given definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/get-functions-by-type specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType} Récupérez les fonctions d'un type spécifique pour une définition donnée. > **Supported products** > **Required Scopes** # Update a function for a definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/functions/update-function specs/2026-09/automation-actions-v4-v2026-09.json PUT /automation/actions/2026-09/{appId}/{definitionId}/functions/{functionType}/{functionId} Mettez une fonction à jour pour une définition donnée par ID. > **Supported products** > **Required Scopes** # Retrieve a specific revision of a definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/revisions/get-revision specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId}/revisions/{revisionId} Récupérez une révision spécifique d'une définition par l'identifiant de révision. > **Supported products** > **Required Scopes** # Retrieve revisions for a given definition Source: https://developers.hubspot.fr/docs/api-reference/latest/automation/workflow-actions/revisions/get-revisions specs/2026-09/automation-actions-v4-v2026-09.json GET /automation/actions/2026-09/{appId}/{definitionId}/revisions Récupérer les versions d'une définition par ID. > **Supported products** > **Required Scopes** # Create a batch of authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/batch/create-authors specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/batch/create Créez les objets auteur de blog détaillés dans le corps de la requête. > **Supported products** > **Required Scopes** # Delete a batch of authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/batch/delete-authors specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/batch/archive Supprimez les objets auteur de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve a batch of authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/batch/get-authors specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/batch/read Récupérez les objets auteur de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Update a batch of authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/batch/update-authors specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/batch/update Mettez à jour les objets auteur de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Create an author Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/create-author specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors Créez un nouvel auteur de blog. > **Supported products** > **Required Scopes** # Delete an author Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/delete-author specs/2026-09/cms-authors-v2026-09.json DELETE /cms/blogs/2026-09/authors/{objectId} Supprimez l'objet auteur de blog identifié par l'ID sur le chemin. > **Supported products** > **Required Scopes** # Retrieve an author Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/get-author specs/2026-09/cms-authors-v2026-09.json GET /cms/blogs/2026-09/authors/{objectId} Récupérez l'objet auteur de blog identifié par l'ID sur le chemin. > **Supported products** > **Required Scopes** # Get all authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/get-authors specs/2026-09/cms-authors-v2026-09.json GET /cms/blogs/2026-09/authors Obtenez la liste des auteurs de blog. Prend en charge la pagination et le filtrage. Cette méthode serait utile pour une intégration qui examine ces modèles et utilise un service externe pour suggérer des modifications. > **Supported products** > **Required Scopes** # CMS API | Blog Authors Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/guide # Attach an author to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/multi-language/attach-to-lang-group specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/multi-language/attach-to-lang-group Associez un auteur de blog à un groupe multilingue. > **Supported products** > **Required Scopes** # Create a new language variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/multi-language/create-language-variation specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/multi-language/create-language-variation Créez une nouvelle variation de langue à partir d'un auteur de blog existant. > **Supported products** > **Required Scopes** # Detach an author from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/multi-language/detach-from-lang-group specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/multi-language/detach-from-lang-group Détachez un auteur de blog d'un groupe multilingue. > **Supported products** > **Required Scopes** # Set a new primary language Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/multi-language/set-new-lang-primary specs/2026-09/cms-authors-v2026-09.json PUT /cms/blogs/2026-09/authors/multi-language/set-new-lang-primary Définissez un auteur de blog comme langue principale d'un groupe multilingue. > **Supported products** > **Required Scopes** # Update languages of multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/multi-language/update-languages specs/2026-09/cms-authors-v2026-09.json POST /cms/blogs/2026-09/authors/multi-language/update-languages Définissez explicitement les nouvelles langues pour chaque auteur de blog dans un groupe multilingue. > **Supported products** > **Required Scopes** # Update an author Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/authors/update-author specs/2026-09/cms-authors-v2026-09.json PATCH /cms/blogs/2026-09/authors/{objectId} Espacez les mises à jour d'un seul objet auteur de blog identifié par l'ID sur le chemin. Toutes les valeurs de colonne ne doivent pas être spécifiées. Seules celles qui doivent être modifiées peuvent être spécifiées. > **Supported products** > **Required Scopes** # Retrieve a blog Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/get-blog specs/2026-09/cms-blog-settings-v2026-09.json GET /cms/blog-settings/2026-09/settings/{blogId} Récupérer un blog spécifique par son ID. > **Supported products** > **Required Scopes** # Get a specific blog revision Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/get-blog-revision specs/2026-09/cms-blog-settings-v2026-09.json GET /cms/blog-settings/2026-09/settings/{blogId}/revisions/{revisionId} Obtenir une révision spécifique du blog. > **Supported products** > **Required Scopes** # Get all blog revisions Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/get-blog-revisions specs/2026-09/cms-blog-settings-v2026-09.json GET /cms/blog-settings/2026-09/settings/{blogId}/revisions Obtenir la liste des révisions du blog. Les résultats peuvent être limités et filtrés par date de création ou de mise à jour. > **Supported products** > **Required Scopes** # Retrieve all blogs Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/get-blogs specs/2026-09/cms-blog-settings-v2026-09.json GET /cms/blog-settings/2026-09/settings Obtenir la liste des blogs. Les résultats peuvent être limités et filtrés par date de création ou de mise à jour. > **Supported products** > **Required Scopes** # CMS API | Blog Settings Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/guide # Add a blog to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/multi-language/attach-to-lang-group specs/2026-09/cms-blog-settings-v2026-09.json POST /cms/blog-settings/2026-09/settings/multi-language/attach-to-lang-group Associez un blog à un groupe multilingue. > **Supported products** > **Required Scopes** # Update blog languages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/multi-language/create-blog-setting specs/2026-09/cms-blog-settings-v2026-09.json POST /cms/blog-settings/2026-09/settings/multi-language/update-languages Définissez explicitement les nouvelles langues pour chaque blog dans un groupe multilingue. > **Supported products** > **Required Scopes** # Create a language variation from an existing blog Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/multi-language/create-language-variation specs/2026-09/cms-blog-settings-v2026-09.json POST /cms/blog-settings/2026-09/settings/multi-language/create-language-variation Créer une nouvelle variante linguistique à partir d'un blog existant. > **Supported products** > **Required Scopes** # Remove a blog from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/multi-language/detach-from-lang-group specs/2026-09/cms-blog-settings-v2026-09.json POST /cms/blog-settings/2026-09/settings/multi-language/detach-from-lang-group Dissocie un blog d'un groupe multilingue. > **Supported products** > **Required Scopes** # Set primary language to match a specific blog Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/blog-settings/multi-language/set-new-lang-primary specs/2026-09/cms-blog-settings-v2026-09.json PUT /cms/blog-settings/2026-09/settings/multi-language/set-new-lang-primary Définissez un blog comme langue principale d'un groupe multilingue. > **Supported products** > **Required Scopes** # Create a batch of posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/batch/create-posts specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/batch/create Créer un lot d'articles de blog, en spécifiant leur contenu dans le corps de la requête. > **Supported products** > **Required Scopes** # Delete a batch of posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/batch/delete-posts specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/batch/archive Supprimer un article de blog par son ID. Remarque : cette fonction n'est pas la même que la fonction `archive` dans l'application. Pour exécuter une `archive` de tableau de bord, envoyez une mise à jour normale avec le champ `archivedInDashboard` réglé sur `Vrai`. > **Supported products** > **Required Scopes** # Retrieve a batch of posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/batch/get-posts specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/batch/read Récupérer un lot d'articles de blog par ID. identifié dans le corps de la requête. > **Supported products** > **Required Scopes** # Update a batch of posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/batch/update-posts specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/batch/update Mettre à jour un lot d'articles de blog > **Supported products** > **Required Scopes** # Clone a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/clone-post specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/clone Cloner un article de blog et en faire une copie dans un nouvel article de blog. > **Supported products** > **Required Scopes** # Create a new post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/create-post specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts Créer un nouvel article de blog, en précisant son contenu dans le corps de la requête. > **Supported products** > **Required Scopes** # Delete a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/delete-post specs/2026-09/cms-posts-v2026-09.json DELETE /cms/blogs/2026-09/posts/{objectId} Supprimez un article de blog par ID. > **Supported products** > **Required Scopes** # Retrieve the full draft version of a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/drafts/get-post-draft specs/2026-09/cms-posts-v2026-09.json GET /cms/blogs/2026-09/posts/{objectId}/draft Récupérez la version brouillon complète de l'article de blog. > **Supported products** > **Required Scopes** # Publish a post draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/drafts/publish-draft specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/{objectId}/draft/push-live Publiez la version brouillon de l'article de blog en envoyant son contenu à la page en ligne. > **Supported products** > **Required Scopes** # Update the draft of a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/drafts/update-post-draft specs/2026-09/cms-posts-v2026-09.json PATCH /cms/blogs/2026-09/posts/{objectId}/draft Met partiellement à jour la version brouillon d'un article de blog unique par ID. Vous devez seulement préciser les valeurs que vous voulez mettre à jour. > **Supported products** > **Required Scopes** # Retrieve a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/get-post specs/2026-09/cms-posts-v2026-09.json GET /cms/blogs/2026-09/posts/{objectId} Récupérez un article de blog par ID d'article. > **Supported products** > **Required Scopes** # Get all posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/get-posts specs/2026-09/cms-posts-v2026-09.json GET /cms/blogs/2026-09/posts Récupérer tous les articles de blog, avec des options de pagination et de filtrage. Cette méthode serait utile pour une intégration qui ingère les articles et suggère des modifications. > **Supported products** > **Required Scopes** # CMS API | Blog Posts Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/guide # Attach post to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/multi-language/attach-to-lang-group specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/multi-language/attach-to-lang-group Joindre un article de blog à un [groupe multilingue] (https://developers.hubspot.com/docs/guides/cms/content/multi-language-content). > **Supported products** > **Required Scopes** # Create a language variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/multi-language/create-language-variation specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/multi-language/create-language-variation Créer une nouvelle variation de langue à partir d'un article de blog existant > **Supported products** > **Required Scopes** # Detach post from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/multi-language/detach-from-lang-group specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/multi-language/detach-from-lang-group Détacher un article de blog d'un [groupe multilingue] (https://developers.hubspot.com/docs/guides/cms/content/multi-language-content). > **Supported products** > **Required Scopes** # Set a new primary language Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/multi-language/set-new-lang-primary specs/2026-09/cms-posts-v2026-09.json PUT /cms/blogs/2026-09/posts/multi-language/set-new-lang-primary Définir la langue principale d'un [groupe multilingue] (https://developers.hubspot.com/docs/guides/cms/content/multi-language-content) sur la langue du post fourni (spécifié comme un ID dans le corps de la requête) > **Supported products** > **Required Scopes** # Update languages of multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/multi-language/update-languages specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/multi-language/update-languages Définir explicitement les nouvelles langues pour chaque article dans un [groupe multilingue] (https://developers.hubspot.com/docs/guides/cms/content/multi-language-content). > **Supported products** > **Required Scopes** # Retrieve a previous version of a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/revisions/get-post-version specs/2026-09/cms-posts-v2026-09.json GET /cms/blogs/2026-09/posts/{objectId}/revisions/{revisionId} Récupérez une version antérieure d'un article de blog. > **Supported products** > **Required Scopes** # Retrieves all previous versions of a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/revisions/get-post-versions specs/2026-09/cms-posts-v2026-09.json GET /cms/blogs/2026-09/posts/{objectId}/revisions Récupérez toutes les versions antérieures d'un article de blog. > **Supported products** > **Required Scopes** # Restore a previous version Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/revisions/restore-post specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/{objectId}/revisions/{revisionId}/restore Restaure l'une des versions antérieures d'un article de blog. > **Supported products** > **Required Scopes** # Restore a draft to a previous version Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/revisions/restore-to-draft specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/{objectId}/revisions/{revisionId}/restore-to-draft Récupère une version indiquée d'un article de blog et la définit comme la nouvelle version brouillon de l'article de blog. > **Supported products** > **Required Scopes** # Schedule a post to be published Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/schedule-post specs/2026-09/cms-posts-v2026-09.json POST /cms/blogs/2026-09/posts/schedule Programmez la publication d'un article de blog à une heure spécifique. > **Supported products** > **Required Scopes** # Update a post Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/posts/update-post specs/2026-09/cms-posts-v2026-09.json PATCH /cms/blogs/2026-09/posts/{objectId} Met partiellement à jour un article de blog unique par ID. Vous devez seulement préciser les valeurs que vous voulez mettre à jour. > **Supported products** > **Required Scopes** # Create a batch of tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/batch/create-tags specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/batch/create Créez les objets balises de blog détaillés dans le corps de la requête. > **Supported products** > **Required Scopes** # Delete a batch of tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/batch/delete-tags specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/batch/archive Supprimez les objets balises de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve a batch of tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/batch/get-tags specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/batch/read Récupérez les objets balises de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Update a batch of tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/batch/update-tags specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/batch/update Mettez à jour les objets balises de blog identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Create a tag Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/create-tag specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags Créer une nouvelle balise de blog. > **Supported products** > **Required Scopes** # Delete a tag Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/delete-tag specs/2026-09/cms-tags-v2026-09.json DELETE /cms/blogs/2026-09/tags/{objectId} Supprimez l'objet balise de blog identifié par l'ID sur le chemin. > **Supported products** > **Required Scopes** # Retrieve a tag Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/get-tag specs/2026-09/cms-tags-v2026-09.json GET /cms/blogs/2026-09/tags/{objectId} Récupérez l'objet balise de blog identifié par l'ID sur le chemin. > **Supported products** > **Required Scopes** # Retrieve all tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/get-tags specs/2026-09/cms-tags-v2026-09.json GET /cms/blogs/2026-09/tags Obtenez la liste des balises de blog. Prend en charge la pagination et le filtrage. Cette méthode serait utile pour une intégration qui examine ces modèles et utilise un service externe pour suggérer des modifications. > **Supported products** > **Required Scopes** # CMS API | Blog tags Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/guide # Attach a tag to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/multi-language/attach-to-lang-group specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/multi-language/attach-to-lang-group Associez une balise de blog à un groupe multilingue. > **Supported products** > **Required Scopes** # Create a new language variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/multi-language/create-language-variation specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/multi-language/create-language-variation Créer une nouvelle variation de langue à partir d'une balise de blog existante > **Supported products** > **Required Scopes** # Detach a tag from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/multi-language/detach-from-lang-group specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/multi-language/detach-from-lang-group Dissociez une balise de blog d'un groupe multilingue. > **Supported products** > **Required Scopes** # Set a new primary language Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/multi-language/set-new-lang-primary specs/2026-09/cms-tags-v2026-09.json PUT /cms/blogs/2026-09/tags/multi-language/set-new-lang-primary Définissez une balise de blog comme langue principale d'un groupe multilingue. > **Supported products** > **Required Scopes** # Update languages of multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/multi-language/update-languages specs/2026-09/cms-tags-v2026-09.json POST /cms/blogs/2026-09/tags/multi-language/update-languages Définissez explicitement les nouvelles langues pour chaque balise de blog dans un groupe multilingue. > **Supported products** > **Required Scopes** # Update a tag Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/blogs/tags/update-tag specs/2026-09/cms-tags-v2026-09.json PATCH /cms/blogs/2026-09/tags/{objectId} Espace les mises à jour d'un seul objet balise de blog identifié par l'ID sur le chemin. Toutes les valeurs de colonne ne doivent pas être spécifiées. Seules celles qui doivent être modifiées peuvent être spécifiées. > **Supported products** > **Required Scopes** # Export content audit logs Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/content-audit/export-content-audit specs/2026-09/cms-cms-content-audit-v2026-09.json POST /cms/audit-logs/2026-09/export Exportez les journaux d'audit du CMS en fonction des paramètres spécifiés. Ce point de terminaison permet aux utilisateurs d'exporter des journaux dans différents formats, tels que XLS, XLSX ou CSV. La requête nécessite de spécifier des informations, telles que l'adresse e-mail, l'ID du portail et les ID des utilisateurs destinataires. Ceci est utile pour l'audit et la surveillance des modifications au sein du CMS. > **Supported products** > **Required Scopes** # Retrieve content audit logs Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/content-audit/get-content-audit specs/2026-09/cms-cms-content-audit-v2026-09.json GET /cms/audit-logs/2026-09 Récupérez les journaux d'audit du CMS dans votre compte HubSpot. Ce point de terminaison vous permet de filtrer les journaux par utilisateur, type d'événement, type d'objet et ID d'objet. Il prend en charge la pagination et le tri, ce qui facilite la navigation dans les grands jeux de données de journaux. Utilisez ce point de terminaison pour surveiller les modifications et les activités au sein de votre CMS. > **Supported products** > **Required Scopes** # API d'audit de contenu CMS Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/content-audit/guide L'API d'audit de contenu CMS vous permet de filtrer et de trier des modifications d'objet de contenu par type, par période ou par ID d'utilisateur HubSpot afin de rester au fait de chaque événement. > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-30d22393-5cdf-4042-9b43-ca5e7bf0dab5)** > **Exigences de portée** # Audit de contenu CMS L'API Audit de contenu CMS vous permet de filtrer et de trier les modifications d'objet de contenu par type, par période ou par ID d'utilisateur HubSpot. Ce point de terminaison est uniquement disponible pour les comptes disposant d'un abonnement ***CMS Hub** Entreprise*. **Exemple de cas d'utilisation :** découvrez quel utilisateur a apporté les dernières modifications à une liste de pages. ## Liste des types d'événement CMS | Type d'événement | Description | | - | - | | `CREATED` | Un objet a été créé. | | `DELETED` | Un objet a été supprimé ou déconnecté. | | `PUBLISHED` | Un objet a été publié. | | `UNPUBLISHED` | La publication d'un objet a été annulée. | | `UPDATED` | Un objet a été mis à jour. | ## Liste des types d'objet CMS | Type d'objet | Description | | - | - | | `BLOG` | Les modifications apportées aux paramètres de votre blog dans les paramètres de votre compte. | | `BLOG_POST` | Les articles de blog associés à votre blog. | | `CONTENT_SETTINGS` | Les modifications apportées aux paramètres de votre site web dans les paramètres de votre compte. Les valeurs modifiées apparaitront dans le tableau JSON `meta`. | | `CTA` | Les modifications apportées à vos [calls-to-action (CTA)](https://knowledge.hubspot.com/fr/cta/get-started-with-calls-to-action-ctas). | | `DOMAIN` | Les modifications apportées aux domaines connectés dans vos paramètres Domaines et URL des paramètres de votre compte. | | `EMAIL` | Les modifications apportées aux e-mails dans l'éditeur d'e-mails. | | `FILE` | Les modifications apportées aux fichiers dans l'[outil Fichiers](https://knowledge.hubspot.com/fr/files/organize-edit-and-delete-files). | | `GLOBAL_MODULE` | Les modifications apportées aux [modules globaux.](https://knowledge.hubspot.com/fr/design-manager/make-changes-to-a-global-module-in-only-one-template) | | `HUBDB_TABLE` | Les modifications apportées aux tableaux HubDB. | | `KNOWLEDGE_BASE` | Les modifications apportées aux paramètres de votre base de connaissances dans les paramètres de votre compte. | | `KNOWLEDGE_BASE_ARTICLE` | Les modifications apportées aux articles de base de connaissances dans l'éditeur de contenu. | | `LANDING_PAGE` | Les modifications apportées aux pages de destination dans l'éditeur de contenu. | | `MODULE` | Les modifications apportées aux [modules](/docs/cms/start-building/building-blocks/modules/overview). | | `SERVERLESS_FUNCTION` | Les modifications apportées aux [fonctions sans serveur](/docs/cms/start-building/features/serverless-functions/overview). | | `TEMPLATE` | Les modifications apportées aux [modèles](/docs/cms/start-building/building-blocks/templates/overview). | | `THEME` | Les modifications apportées aux [paramètres du thème](https://knowledge.hubspot.com/fr/website-and-landing-pages/edit-your-theme-settings) et lors de la création de [thèmes](https://knowledge.hubspot.com/fr/website-and-landing-pages/edit-your-theme-settings). | | `URL_MAPPING` | Les modifications apportées à vos redirections d'URL dans les paramètres Redirections d'URL des paramètres de votre compte. | | `WEBSITE_PAGE` | Les modifications apportées aux pages de site web dans l'éditeur de contenu. | # Retrieve a domain Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/domains/get-domain specs/2026-09/cms-domains-v2026-09.json GET /cms/domains/2026-09/{domainId} Retourne un seul domaine avec l'ID précisé. > **Supported products** > **Required Scopes** # Retrieve all domains Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/domains/get-domains specs/2026-09/cms-domains-v2026-09.json GET /cms/domains/2026-09 Permet de récupérer une liste des domaines de contenu associés à votre compte HubSpot. Ce point de terminaison permet le filtrage par horodatage de création et de mise à jour, le tri et la pagination. Il est utile pour gérer et examiner les domaines configurés dans votre CMS. > **Supported products** > **Required Scopes** # CMS API | Domain management Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/domains/guide # API du CMS | HubDB Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/guide Les points de terminaison HubDB sont utilisés pour obtenir et gérer des données dans vos tableaux de données HubDB. > **Exigences de portée** HubDB est une banque de données relationnelles, qui présente les données sous forme de lignes, de colonnes et de cellules dans un tableau, un peu comme une feuille de calcul. Les tableaux HubDB peuvent être ajoutés ou modifiés [dans votre compte HubSpot](/docs/cms/start-building/features/storage/hubdb#create-a-hubdb-table), mais vous pouvez également utiliser les points de terminaison d'API documentés ici. Pour plus d'informations sur l'utilisation des données des tableaux HubDB sur votre site web ou dans [les e-mails programmables](/docs/cms/start-building/features/data-driven-content/emails-with-programmable-content), consultez [la documentation du développeur du CMS Hub.](/docs/cms/start-building/features/storage/hubdb) Comme pour les pages de site web HubSpot, les tableaux HubDB prennent en charge les versions `draft` et `published`. Cela vous permet de mettre à jour les données du tableau, soit à des fins de test, soit pour permettre un processus d'approbation manuel, sans affecter les pages en ligne. Découvrez-en davantage sur les [tableaux brouillons et les tableaux en ligne](#draft-vs-live-tables). Si un tableau est défini pour être [accessible au public](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only), vous pouvez accéder à la version publiée du tableau et des lignes sans aucune authentification en spécifiant votre ID de compte HubSpot via le paramètre de requête `portalId`. Si vous effectuez une migration à partir de la v2 de l'API HubDB, découvrez les [modifications apportées à l'API (v3) actuelle](#changes-in-v3). > [!WARNING] > > ### Remarque: > > Les points de terminaison qui prennent en charge `GET` prennent également en charge `CORS`, afin que vous puissiez accéder aux données d'un tableau côté client à l'aide de JavaScript et de votre ID de compte. D'autres méthodes et le point de terminaison *Obtenir tous les tableaux* nécessite une authentification et ne prend pas en charge `CORS`. ## Limites de taux Les requêtes d'API HubDB ont des limites de taux différentes, selon le type de demande : * Les demandes `GET` effectuées qui ne nécessitent pas d'authentification (dont les requêtes JavaScript côté client) sont limitées à 10 demandes par seconde. Ces demandes ne seront pas comptabilisées dans la limite quotidienne. * Toutes les autres demandes [utilisant l'authentification](https://developers.hubspot.fr/docs/guides/api/oauth/tokens) suivent les [limites standard](/docs/api-reference/overview). ## Brouillons de tableaux comparés aux tableaux en ligne Les tableaux HubDB ont à la fois des brouillons et des versions en ligne, et les versions en ligne peuvent être publiées ou non publiées. Cela vous permettra de mettre à jour les données du tableau, soit pour des aperçus de page ou des tests, soit pour permettre un processus d'approbation manuel, sans affecter les pages en ligne. Dans cette API, des points de terminaison distincts sont désignés pour les brouillons et les versions publiées d'un tableau. Par exemple, vous pouvez récupérer la version publiée d'un tableau en effectuant une demande `GET` au point de terminaison suivant : `/cms/v3/hubdb/tables/{tableIdOrName}` Aussi, pour récupérer tout contenu brouillon qui n'a pas encore été publié, vous devez ajouter `/draft` à la fin de l'URL : `/cms/v3/hubdb/tables/{tableIdOrName}/draft` Les brouillons de données peuvent être analysés puis envoyés dans HubSpot ou avec le point de terminaison `/push-live`. Les données provisoires peuvent également être supprimées via un point de terminaison `/reset`, ce qui vous permet de revenir à la version actuelle en ligne des données sans interruption. ## Créer un tableau HubDB Pour créer un tableau HubDB, effectuez une demande `POST` à `/cms/v3/hubdb/tables`. Dans le corps de la requête, spécifiez les champs obligatoires suivants : | Champ | Type | Description | Example | | - | - | - | - | | `name` | Chaîne |  : le nom interne du tableau. Ce nom ne peut pas être modifié une fois le tableau créé. Les noms peuvent uniquement contenir des minuscules, des chiffres et des tirets du bas et ne peuvent pas commencer par un chiffre. | `"name": "my_table"` | | `label` | Chaîne |  : le libellé du tableau que les utilisateurs voient lorsqu'ils modifient le tableau dans HubSpot. | `"label":"My table"` | En outre, vous pouvez spécifier les champs facultatifs suivants : | Champ | Type | Description | Example | | - | - | - | - | | `useForPages` | Booléen |  : précise si le tableau peut être utilisé pour [créer de pages dynamiques](#configuring-hubdb-tables-for-dynamic-pages). | `"useForPages": false` | | `allowPublicAPIAccess` | Booléen |  : précise si le tableau peut être lu sans autorisation. | `"allowPublicApiAccess": false` | | `allowChildTables` | Booléen |  : précise si des tableaux enfants peuvent être créés pour le tableau. | `"allowChildTables": false` | | `enableChildTablePages` | Booléen |  : précise si des [pages dynamiques à plusieurs niveaux](/docs/cms/start-building/features/data-driven-content/hubdb/multilevel) doivent être créées en utilisant des tableaux enfants. | `"enableChildTablePages": false` | | `columns` | Objet |  : les colonnes du tableau. Découvrez-en davantage sur les propriétés de colonne dans les sections [Ajouter des colonnes de tableau](#add-table-columns). | `See "Add table columns" section below` | Sans colonnes ajoutées pour le moment, votre demande de création pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "name": "test_table", "label": "Test Table", "useForPages": false, "allowPublicApiAccess": false, "allowChildTables": true, "enableChildTablePages": false, "columns": [] } ``` ### Ajouter des colonnes de tableau Chaque colonne d'un tableau HubDB peut être définie avec les propriétés suivantes : | Champ | Type | Description | Example | | - | - | - | - | | `name` | Chaîne |  : obligatoire. Le nom interne de la colonne. Ne peut pas être modifié après la création de la colonne. | `"name": "row_name"` | | `label` | Chaîne | facultative. Le libellé de la colonne que les utilisateurs voient lorsqu'ils modifient le tableau dans HubSpot. | `"label": "Row label"` | | `type` | Chaîne |  : le type de données de la colonne. Doit être l'un des éléments suivants :
          • `TEXT` : un champ de texte.
          • `RICHTEXT` : un champ de texte qui prend en charge le formatage HTML de base. Cette option n'est pas recommandée pour le HTML brut, car elle peut avoir un impact sur la possibilité de modifier le code HTML dans HubSpot. La modification du code dans HubSpot peut également affecter la façon dont le code est affiché.
          • `NUMBER` : un champ numérique.
          • `BOOLEAN` : représenté sous la forme d'une case à cocher dans HubSpot. Utilisez `0` pour non coché et `1` pour coché.
          • `DATE` : stocke une date spécifique sous forme d'horodatage en millisecondes fixé à minuit UTC.
          • `DATETIME` : stocke une date et une heure sous forme d'horodatage en millisecondes.
          • `SELECT` : la colonne ne peut être définie que sur l'un des ensembles d'options. Consultez le champ `options` ci-dessous pour les propriétés requises.
          • `MULTISELECT` : la colonne peut être définie sur un ou plusieurs ensembles d'options. Voir le champ `options` ci-dessous pour les propriétés requises.
          • `LOCATION` : stocke un emplacement de latitude et de longitude.
          • `IMAGE` : stocke l'URL d'une image.
          • `VIDEO` : stocke l'ID du lecteur de la vidéo.
          • `FOREIGN_ID` : la colonne fera référence à une colonne d'un autre tableau HubDB. En outre, vous devez définir l'autre tableau HubDB avec les propriétés suivantes :
            • foreignTableId : l'ID de l'autre tableau HubDB.
            • foreignColumnId : l'ID de la colonne dans l'autre tableau HubDB.
          • `CURRENCY` : stocke le nombre comme une valeur monétaire.
          • `FILE` : stocke un fichier à partir du gestionnaire de fichiers. Vous devrez également inclure un champ `fileType` pour indiquer si le champ peut stocker tous les types de fichiers (`FILE`) ou seulement des types de documents tels que les PDF (`DOCUMENT`).
          | `"type": "type"` | | `options` | Objet |  : une liste d'options pour la sélection et la sélection multiple des colonnes. Chaque option est définie par un `name` avec un `type` égal à `option`. | `"option": [{"name":"Option 1", "type":"option"}, {"name": "Option 2", "type": "option"}]` | En utilisant les champs ci-dessus, votre demande de création d'un nouveau tableau HubDB pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "label": "Test Table", "name": "test_table", "columns": [ { "name": "text_column", "label": "Text Column", "archived": false, "type": "TEXT" }, { "name": "number_column", "label": "Number Column", "archived": false, "type": "NUMBER" }, { "name": "multiselect", "label": "Multi Select Column", "archived": false, "type": "multiselect", "options": [ { "name": "Option 1", "type": "option" }, { "name": "Option 2", "type": "option" } ] } ], "useForPages": true, "allowChildTables": true, "enableChildTablePages": false, "allowPublicApiAccess": false } ``` Après la création d'un tableau, des ID seront attribués aux colonnes dans l'ordre croissant. Lors de la mise à jour de colonnes existantes, incluez le champ `id` de la colonne dans l'objet d'entrée. ### Ajouter des lignes de tableau Vous pouvez ajouter des lignes manuellement via l'API ou [importer des lignes depuis un fichier CSV](#import-rows-from-csv). Pour ajouter des lignes à un tableau HubDB, effectuez une demande `POST` à `/cms/v3/hubdb/tables/{tableIdOrName}/rows`. Pour chaque ligne du tableau, vous pouvez inclure les champs suivants : | Champ | Type | Description | Example | | - | - | - | - | | `values` | Objet |  : une liste de paires clé-valeur avec le nom de la colonne et la valeur que vous souhaitez y ajouter. Si vous ne souhaitez pas définir de valeur spécifique pour une colonne, vous pouvez omettre le nom de la colonne dans la liste des paires clé-valeur. | `"values": { "text_column": "sample text", "number_column": 76}` | | `path` | Chaîne |  : pour les tableaux [activés pour les pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview), `path` est le suffixe de chemin d'accès utilisé pour la page créée pour cette ligne. | `"path": "example_url_path"` | | `name` | Chaîne |  : pour les tableaux [activés pour les pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview), `name` est le titre HTML utilisé pour la page créée pour cette ligne. | `"name": "Example Title"` | | `childTableId` | Nombre |  : lors de la création de [pages dynamiques à plusieurs niveaux](/docs/cms/start-building/features/data-driven-content/hubdb/multilevel), `childTableId` spécifie l'ID de tableau enfant. | `"childTableId": 123456` | En utilisant les champs ci-dessus, votre demande pourrait ressembler à ce qui suit : ```json theme={null} // Example request { "values": { "text_column": "sample text value", "number_column": 76, "rich_text_column": "This is a styled paragraph.", "date_column": 1591228800000, "date_time_column": 1604450520000, "boolean_column": 1, "select_column": { "name": "option 1", "type": "option" }, "multiselect_column": [ { "name": "Option 1", "type": "option" }, { "name": "Option 2", "type": "option" } ], "url_column": "https://www.hubspot.com/marketing", "video_column": 3392210008, "image_column": { "url": "https://f.hubspotusercontentqa00.net/hubfs/99992002/image3%20(1).jpg", "width": 1600, "height": 900, "type": "image" }, "foreign_id_column": [ { "id": "4364402239", "type": "foreignid" }, { "id": "4364402240", "type": "foreignid" } ] }, "path": "test_path", "name": "test_title", "childTableId": "1902373" } ``` ### Importer des lignes depuis CSV Pour importer des données dans un tableau HubDB à partir d'un fichier CSV, effectuez une demande `POST` à `/cms/v3/hubdb/tables/{tableIdOrName}/draft/import`. Le point de terminaison d'import accepte une demande `multipart/form-data` `POST` : * `config`\*\* :\*\* un ensemble d'options JSON pour l'import. * `file`\*\* :\*\* le fichier CSV que vous souhaitez importer. Dans `config`, ajoutez les champs suivants en tant que chaîne JSON : | Champ | Type | Description | Example | | - | - | - | - | | `skipRows` | Nombre |  : nombre de lignes d'en-tête à ignorer. La valeur par défaut de ce champ est `1`, en ignorant la première ligne et en la traitant comme un en-tête. Définissez ce paramètre sur `0` si toutes les lignes sont des données valides. | `"skipRows": 0` | | `separator` | Chaîne |  : délimiteur de colonne dans le fichier CSV. Défini sur `","` par défaut. | `"separator": ","` | | `idSourceColumn` | Nombre |  : l'index de la colonne dans le fichier source contenant l'ID de la ligne (`hs_id`). Si cette colonne est spécifiée, l'import mettra à jour les lignes existantes dans le tableau pour les ID de lignes correspondants à partir du fichier CSV. Il s'agit d'une option facultative que vous pouvez ignorer la première fois que vous importez des données dans un tableau. Consultez la section [Options de réinitialisation](#reset-options) ci-dessous pour plus d'informations. | `"idSourceColumn": 1` | | `resetTable` | Booléen |  : la valeur par défaut de booléen est `false`, ce qui signifie que les lignes du tableau seront mises à jour sans supprimer de lignes existantes. Si cette valeur est définie sur `true`, les lignes de la feuille de calcul remplaceront les données du tableau, ce qui signifie que toutes les lignes du tableau qui n'y figurent pas seront supprimées. Consultez la section [Options de réinitialisation](#reset-options) ci-dessous pour plus d'informations. | `"resetTable": true` | | `nameSourceColumn` | Nombre |  : pour les tableaux [activés pour les pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview), `nameSourceColumn` spécifie la colonne du fichier CSV qui contient le `name` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"nameSourcecolumn": 5` | | `pathSourceColumn` | Nombre |  : pour les tableaux [activés pour les pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview), `pathSourceColumn` spécifie la colonne du fichier CSV qui contient le `path` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"pathSourcecolumn": 6` | | `childTableSourceColumn` | Nombre |  : spécifie la colonne du fichier CSV qui contient le `childTableId` de la ligne. Les numéros de colonne sont dans l'ordre croissant, la première colonne étant `1`. | `"childTableSourcecolumn": 3` | | `columnMappings` | Tableau |  : une liste des mappages entre les colonnes du fichier source et les colonnes du tableau HubDB de destination. Chaque mappage doit avoir le format suivant : `{"source":1,"target”:"columnIdOrName"}`
          • **source :** l'index des colonnes dans le fichier source. Par exemple, `2` pour la deuxième colonne.
          • **cible :** l'ID ou le nom de la colonne du tableau HubDB. Vous pouvez obtenir l'ID ou le nom d'une colonne en [obtenant les détails du tableau](#retrieve-hubdb-data).
          Si votre fichier contient une colonne `hs_id`, vous ne devez pas l'inclure dans `columnMappings`. Incluez-le à la place en tant que `idSourceColumn` mettre à jour les lignes existantes. | `"columnMappings": [{"source":1, "target": 2}, {"source": 2, "target": "column_name"}]` | | `primaryKeyColumn` | Chaîne |  : le nom d'une colonne dans le tableau HubDB cible qui sera utilisée pour la déduplication. L'ID de la colonne ne peut pas être utilisé pour ce champ. | `"primaryKeyColumn": "column_name"` | | `encoding` | Chaîne |  : le type d'encodage du fichier. Par exemple : `utf-8`, `ascii`, `iso-8859-2`, `iso-8859-5`, `iso-2022-jp`, `windows-1252`. | `"encoding": "utf-8"` | | `format` | Chaîne |  : seul le format CSV est pris en charge. | `"format": "csv"` | En utilisant le tableau ci-dessus, votre `config` JSON pourrait ressembler à ce qui suit : ```json theme={null} // Example config JSON { "skipRows": 1, "separator": ",", "idSourceColumn": 1, "resetTable": false, "columnMappings": [ { "target": 1, "source": 2 }, { "target": 2, "source": "zip_code" } ], "primaryKeyColumn": "name", "encoding": "utf-8", "format": "csv" } ``` Si vous utilisez cURL, votre commande peut ressembler à ce qui suit : ```shell theme={null} curl -L -X POST 'https://api.hubspotqa.com/hubdb/api/v2/tables/xxxxxx/import?portalId=xxxxxxx' \ -H 'Content-Type: multipart/form-data' \ -F 'config="{\"skipRows\":1,\"format\":\"csv\",\"separator\":\",\",\"encoding\":\"iso-8859-1\",\"columnMappings\":[{\"target\":1,\"source\":7},{\"target\":3,\"source\":8}],\"idSourceColumn\":1,\"pathSourceColumn\":null,\"nameSourceColumn\":null,\"childTableSourceColumn\":null,\"resetTable\":true}"' \ -F 'file=@"/Users/xxxxxxxxxxxxx/Downloads/filename.csv"' ``` ### Formatage de la date Plusieurs formats peuvent être utilisés lors de l'import de données dans une colonne de type date. **Entiers** * `yyyy/mm/dd` * `yyyy/mm/dd` * `mm/dd/yyyy` * `mm/dd/yy` Ces formats exigent que le mois précède le jour (c'est-à-dire que `dd/mm/yy` n'est pas accepté). Les entiers peuvent être séparés par des traits d'union (`-`) ou des barres obliques (`/`). **Dates détendues** Vous pouvez également importer des formats de date moins standardisés que les dates basées sur des entiers. Par exemple : \*\* * `The 1st of March in the year 2022` * `Fri Mar 4 2022` * `March 4th '22` **Dates relatives** HubSpot analysera les formats de date suivants par rapport au jour en cours : \*\* * `next Thursday` * `Today` * `tomorrow` * `3 days from now` ### Réinitialiser les options Lorsque vous importez des données depuis un fichier CSV dans un tableau HubDB, vous pouvez définir le champ `resetTable` sur `true` ou `false` (par défaut) pour gérer le remplacement des données de ligne HubDB. * Si `resetTable` est défini sur `true` : * Si les lignes du fichier CSV ne disposent pas d'une colonne ID de ligne (si `hs_id` ou l'ID de ligne est spécifié comme `0`, ces lignes seront insérées avec les nouveaux ID de lignes générés. * Si les ID de ligne du fichier CSV existent déjà dans le tableau cible, les lignes existantes du tableau seront mises à jour avec les nouvelles valeurs du fichier d'entrée. * Si le tableau contient des lignes, mais que le fichier CSV d'entrée ne contient pas ces ID de ligne, ces lignes seront supprimées du tableau cible. * Si les ID de lignes du fichier CSV d'entrée n'existent pas dans le tableau cible, ces lignes seront insérées avec les nouveaux ID de lignes générés et les ID de lignes donnés dans le fichier d'entrée seront ignorés. * Si le fichier CSV d'entrée ne contient pas du tout la colonne ID de ligne, toutes les lignes seront supprimées du tableau cible et les lignes du fichier d'entrée seront insérées avec les nouveaux ID de lignes générés. * Si `resetTable` est défini sur `false` (valeur par défaut) : * Si les ID de ligne du fichier CSV existent déjà dans le tableau cible, les lignes existantes du tableau seront mises à jour avec les nouvelles valeurs du fichier d'entrée. * Si le tableau contient des lignes, mais que le fichier CSV d'entrée ne contient pas ces ID de ligne, ces lignes ne seront *pas* supprimées du tableau cible et ces lignes resteront inchangées. * Si les ID de lignes du fichier CSV d'entrée n'existent pas dans le tableau cible, ces lignes seront insérées avec les nouveaux ID de lignes générés et les ID de lignes donnés dans le fichier d'entrée seront ignorés. * Si les lignes du fichier CSV ne contiennent pas de colonne ID de ligne ou si l'ID de ligne est défini comme `0`, ces lignes seront insérées avec les nouveaux ID de lignes générés. ## Récupérer les données HubDB Il existe plusieurs façons de récupérer des données HubDB, selon que vous recherchez les détails du tableau ou les lignes d'un tableau : * Pour récupérer les détails de tous les tableaux publiés, effectuez une demande `GET` à `/cms/v3/hubdb/tables`. * Pour récupérer les détails d'un tableau publié spécifique, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}`. * Pour récupérer toutes les lignes d'un tableau spécifique, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}/rows`. * Pour récupérer une ligne spécifique d'un tableau, effectuez une demande `GET` à `/cms/v3/hubdb/tables{tableIdOrName}/rows/{rowId}`. Lorsque vous récupérez des données de ligne, vous pouvez filtrer et trier davantage les résultats. Si un tableau est défini pour être [accessible au public](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only), vous pouvez accéder à la version publiée du tableau et des lignes sans aucune authentification en spécifiant votre ID de compte HubSpot via le paramètre de requête `portalId`. ### Filtrer les lignes renvoyées Lors de la récupération des données de tableau HubDB, vous pouvez appliquer des filtres comme paramètres de requête pour recevoir des données spécifiques. Les paramètres de requête de filtre sont construits comme suit : `columnName__operator`. Par exemple, si vous disposez d'une colonne numérique nommée *bar*, vous pouvez filtrer les résultats pour n'inclure que les lignes où *bar* est supérieur à 10 : `&bar__gt=10`. Tous les filtres sont associés sous forme de ET (les filtres OU ne sont pas pris en charge actuellement). Lors du filtrage, tenez compte des informations suivantes : * Lorsque vous transmettez des valeurs pour des colonnes `multiselect`, les valeurs doivent être séparées par des virgules (par exemple : `multiselect_column__contains=1,2`). * Pour les filtres `datetime`, vous pouvez utiliser des dates relatives à la place des horodatages afin de spécifier une valeur relative à l'heure actuelle. Par exemple, `-3h` correspondrait à l'horodatage de 3 heures avant le moment présent, alors que `10s` correspondrait à 10 secondes dans le futur. Les unités de temps prises en charge sont ms (millisecondes), s (secondes), m (minutes), h (heures), j (jours). L'heure actuelle peut être utilisée en spécifiant une valeur zéro : 0 s * Pour les besoins de ces filtres, la colonne intégrée `hs_id` est une colonne `number`, la colonne `hs_created_at` est une colonne `datetime`, et les colonnes `hs_path` et `hs_name` sont des colonnes `text`. Découvrez ci-dessous quels opérateurs peuvent être appliqués à quels types de colonnes : | Opérateur | Nom | Description | | - | - | - | | `eq (or none)` | Égaux |  : tous les types de colonnes. Ce filtre est appliqué si aucun opérateur n'est utilisé. Lorsqu'il est utilisé avec des colonnes à sélection multiple, renvoie des lignes qui correspondent exactement aux valeurs fournies. | | `ne` | N'est pas égal à |  : tous les types de colonnes. | | `contains` | Contient |  : texte, texte enrichi et sélection multiple. Lorsqu'utilisé avec des colonnes à sélection multiple, renvoie les lignes qui contiennent toutes les valeurs fournies. Ce filtre prend en compte la casse. | | `lt` | Inférieur à |  : nombre, date et date et heure. | | `lte` | Inférieur ou égal à |  : nombre, date et date et heure. | | `gt` | Supérieur à |  : nombre, date et date et heure. | | `gte` | Supérieur ou égal à |  : nombre, date et date et heure. | | `is_null` | Nul |  : tous les types de colonnes sauf booléen. Ce filtre ne nécessite pas de valeur (par exemple : `&exampleColumn__is_null=`). | | `not_null` | Non nul |  : tous les types de colonnes sauf booléen. Ce filtre ne nécessite pas de valeur (par exemple : `&exampleColumn__not_null=`). | | `like` | Comme |  : texte et texte enrichi. | | `not_like` | Différent de |  : texte et texte enrichi. | | `icontains` | Contient |  : texte et texte enrichi. Ce filtre ne prend pas en compte la casse. | | `startswith` | Commence par |  : texte et texte enrichi. | | `in` | Dans |  : nombre, sélection et sélection multiple. Renvoie les lignes où la colonne inclut au moins une des options transmises. S'il n'y a pas d'autre `sort` dans le paramètre de requête, les résultats sont triés dans l'ordre dans lequel les valeurs sont spécifiées dans l'opérateur `in`. | ### Trier les lignes renvoyées Lors de la récupération des données HubDB, vous pouvez appliquer le tri comme paramètre de demande pour déterminer l'ordre des données renvoyées. Pour trier les données, ajoutez un paramètre de demande `sort` et indiquez le nom de la colonne : `&sort=columnName` Par défaut, les données seront renvoyées dans l'ordre naturel de la colonne spécifiée. Vous pouvez inverser le tri en ajoutant un `-` à un nom de colonne : `&sort=-columnName` Vous pouvez inclure ce paramètre plusieurs fois pour trier plusieurs colonnes. En plus du tri par colonne, trois fonctions peuvent être utilisées : * **geo\_distance(location\_column\_name, latitude, longitude) :** prend le nom d'une colonne d'emplacement et des coordonnées, renvoie les lignes classées en fonction de la distance entre les valeurs de la colonne d'emplacement indiquée et les coordonnées fournies. * **longueur(column\_name) :** prend le nom d'une colonne, renvoie les lignes classées selon la longueur de la valeur de la colonne (calculée sous forme de chaîne) * **aléatoire() :** renvoie les lignes dans un ordre aléatoire. Ces fonctions prennent également en charge le classement inverse. Par exemple, le tri suivant `geo_distance` trie d'abord les éléments les plus éloignés : `sort=-geo_distance(location_column,42.37,-71.07)` ## Configurer les tableaux HubDB pour les pages dynamiques Grâce au CMS de HubSpot, vous pouvez utiliser un tableau HubDB comme source de données pour [générer des pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview). Par exemple, vous pouvez créer un tableau qui contient une ligne pour chaque membre de votre équipe de direction, avec des colonnes contenant les informations que vous souhaitez afficher sur une page. Une fois que vous avez sélectionné ce tableau comme source de données dynamique pour une page, cette page génère une page de listing qui affiche toutes les lignes sous forme d'éléments récapitulatifs, ainsi que des pages distinctes pour chaque ligne, similaire à une page de listing de blog et à des pages d'articles de blog. Pour permettre la sélection d'un tableau comme source de données dans l'éditeur de contenu, vous devez définir `useForPage` sur `true`. Vous pouvez éventuellement inclure `dynamicMetaTags` pour spécifier les colonnes à utiliser pour les métadonnées de chaque page. > [!WARNING] > > ### Remarque: > > lors de la spécification de `dynamicMetaTags`, vous devrez vous assurer que la page utilise des balises HubL `page_meta` au lieu de `content`. Découvrez-en davantage dans le [guide des pages dynamiques](/docs/cms/start-building/features/data-driven-content/hubdb/overview). Par exemple, le code ci-dessous permet de créer un tableau qui peut être utilisé pour les pages dynamiques et spécifie les trois colonnes à utiliser pour les métadonnées de page. ```json theme={null} // Example POST request to create table { "name": "dynamic_page_table", "label": "Dynamic page table", "useForPages": true, "columns": [ { "name": "meta_description", "label": "Meta description", "archived": false, "type": "TEXT" }, { "name": "featured_image", "label": "Featured image", "archived": false, "type": "IMAGE" }, { "name": "canonical_url", "label": "Canonical URL", "archived": false, "type": "URL" } ], "dynamicMetaTags": { "DESCRIPTION": 1, "FEATURED_IMAGE_URL": 2, "LINK_REL_CANONICAL_URL": 3 } } ``` | Paramètre | Type | Description | | - | - | - | | `useForPages` | Booléen |  : défini sur `true` pour permettre au tableau d'être utilisé comme source de données pour les pages dynamiques. | | `dynamicMetaTags` | Objet |  : spécifie les colonnes par ID à utiliser pour les métadonnées sur chaque page dynamique. Peut contenir :
          • `DESCRIPTION`
          • `FEATURED_IMAGE_URL`
          • `LINK_REL_CANONICAL_URL`
          Pour tous les champs de métadonnées non spécifiés, les pages hériteront des valeurs respectives de leur page parent. | | `DESCRIPTION` | Nombre |  : l'ID numérique de la colonne à utiliser pour la méta-description de chaque page. | | `FEATURED_IMAGE_URL` | Nombre |  : l'ID numérique de la colonne à utiliser pour l'URL de l'image en vignette de chaque page. | | `LINK_REL_CANONICAL_URL` | Nombre |  : l'ID numérique de la colonne à utiliser pour l'URL canonique de chaque page. | ## Modifications dans la v3 * Les tableaux doivent avoir à la fois `name` et `label`. Ce nom ne peut pas être modifié une fois le tableau créé. Les noms peuvent uniquement contenir des minuscules, des chiffres et des tirets du bas et ne peuvent pas commencer par un chiffre. `name` et `label` doivent les deux être uniques dans le compte. * L'API prend en charge à la fois les tableaux `id` et `name` dans les chemins URL. * Les points de terminaison des lignes `GET` renvoient la colonne `name` au lieu de `id` dans le champ `values`. De plus, les points de terminaison de lignes `POST` / `PUT` / `PATCH` nécessitent une colonne `name` plutôt que `id` dans le champ `values`. * Les points de terminaison de mise à jour des lignes `PATCH` acceptent désormais les mises à jour plus rares, ce qui signifie que vous pouvez spécifier uniquement les valeurs de colonne que vous devez mettre à jour (alors que vous deviez spécifier toutes les valeurs de colonne dans les versions précédentes). Lorsque vous mettez à jour une colonne avec une liste de valeurs telle que la sélection multiple, vous devez spécifier la liste de toutes les valeurs. Pour supprimer la valeur d'une colonne, vous devez spécifier la colonne avec la valeur comme `null` dans la demande. * Les points de terminaison ont été remplacés par `get` / `update` / `delete` une cellule de ligne au profit des points de terminaison `PATCH` de mise à jour des lignes. * Le point de terminaison d'import prend désormais en charge un champ `idSourceColumn` facultatif avec les champs existants dans les options au format JSON. Vous pouvez utiliser ce champ pour spécifier la colonne du fichier CSV qui contient les ID de ligne. Pour importer de nouvelles lignes avec les nouvelles valeurs pour les lignes existantes, vous pouvez simplement spécifier `0` comme ID de ligne pour les nouvelles lignes et ID de lignes valides pour les colonnes existantes. Pour plus de détails, consultez la section Import ci-dessous. Vous pouvez également utiliser des noms de colonnes ou des identifiants dans le champ cible des mappages de colonnes dans les options au format JSON. * Cloner le point de terminaison nécessite un nouveau nom et un nouveau libellé. # Clone rows in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-clone-rows-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/clone Clone les lignes dans la version brouillon du tableau spécifié, selon un ensemble d'identifiants de ligne. Un maximum de 100 identifiants de ligne par appel. > **Supported products** > **Required Scopes** # Create rows in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-create-rows-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/create Crée des lignes dans la version brouillon du tableau spécifié, en fonction d'un tableau d'objets de lignes. Maximum de 100 objets de lignes par appel. Consultez la section d'aperçu pour plus de détails avec un exemple. > **Supported products** > **Required Scopes** # Get a set of rows Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-read-rows specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/batch/read Renvoie les lignes dans la version publiée du tableau spécifié, étant donné un ensemble d'identifiants de ligne. **Remarque :** ce point de terminaison peut être accédé sans aucune authentification si le tableau est configuré pour être accessible au public. > **Supported products** > **Required Scopes** # Get a set of rows from draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-read-rows-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/read Renvoie les lignes dans la version brouillon du tableau spécifié, selon un ensemble d'identifiants de ligne. > **Supported products** > **Required Scopes** # Replace rows in batch in draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-replace-rows-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/replace Remplace plusieurs lignes en lot dans la version brouillon du tableau, avec un maximum de 100 lignes par appel. Consultez le point de terminaison « PUT /tables/{tableIdOrName}/rows/{rowId}/draft » pour plus de détails sur la mise à jour d'une seule ligne. > **Supported products** > **Required Scopes** # Update rows in batch in draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/batch-update-rows specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/update Met à jour plusieurs lignes en lot dans la version brouillon du tableau, avec un maximum de 100 lignes par appel. Consultez le point de terminaison « PATCH /tables/{tableIdOrName}/rows/{rowId}/draft » pour plus de détails sur la mise à jour d'une seule ligne. > **Supported products** > **Required Scopes** # Clone a row Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/clone-row-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId}/draft/clone Clone une seule ligne dans la version brouillon du tableau. > **Supported products** > **Required Scopes** # Add a new row to a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/create-row specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows Ajoutez une nouvelle ligne à un tableau HubDB. Les nouvelles lignes seront ajoutées à la version brouillon du tableau. Utilisez le point de terminaison `/publish` pour pousser ces changements vers la version publiée. > **Supported products** > **Required Scopes** # Permanently deletes a row Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/delete-hubdb-draft specs/2026-09/cms-hubdb-v2026-09.json DELETE /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId}/draft Supprime définitivement une ligne de la version brouillon d'un tableau. > **Supported products** > **Required Scopes** # Permanently deletes rows Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/delete-row-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft/batch/purge Supprime de manière permanente des lignes de la version brouillon du tableau, selon un ensemble d'identifiants de lignes. 100 identifiants de lignes par appel maximum. > **Supported products** > **Required Scopes** # Get a row from the draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/get-hubdb-draft specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId}/draft Obtenez une seule ligne par ID à partir de la version brouillon d'un tableau. > **Supported products** > **Required Scopes** # Get a table row Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/get-row specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId} Obtenez une seule ligne par ID de la version publiée d'un tableau. **Remarque :** ce point de terminaison peut être accédé sans aucune authentification si le tableau est configuré pour être accessible au public. > **Supported products** > **Required Scopes** # Get rows for a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/get-rows specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/rows Renvoie un ensemble de lignes dans la version publiée du tableau spécifié. Les résultats des lignes peuvent être filtrés et triés. Les options de filtrage et de triage seront envoyées en tant que paramètres de demande à la demande API. Par exemple, en ajoutant les paramètres de demande « column1__gt=5&sort=-column1 », l'API renvoie les lignes avec des valeurs pour la colonne « column1 » supérieures à 5 et dans l'ordre décroissant des valeurs de « column1 ». Consultez la [section d'aperçu](https://developers.hubspot.com/docs/api/cms/hubdb#filtering-and-sorting-table-rows) pour des options détaillées de filtrage et de triage. **Remarque :** ce point de terminaison peut être accédé sans aucune authentification, si le tableau est configuré pour être accessible au public. > **Supported products** > **Required Scopes** # Get rows from draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/get-rows-draft specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/draft Renvoie des lignes dans la version brouillon du tableau spécifié. Les résultats des lignes peuvent être filtrés et triés. Les options de filtrage et de triage seront envoyées en tant que paramètres de demande à la demande API. Par exemple, en ajoutant les paramètres de demande « column1__gt=5&sort=-column1 », l'API renvoie les lignes avec des valeurs pour la colonne « column1 » supérieures à 5 et dans l'ordre décroissant des valeurs de « column1 ». Consultez la [section d'aperçu](https://developers.hubspot.com/docs/api/cms/hubdb#filtering-and-sorting-table-rows) pour des options détaillées de filtrage et de triage. > **Supported products** > **Required Scopes** # Replaces an existing row Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/update-hubdb-draft specs/2026-09/cms-hubdb-v2026-09.json PUT /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId}/draft Remplacer une seule ligne dans la version brouillon du tableau. Toutes les valeurs des colonnes doivent être spécifiées. Si une colonne a une valeur dans le tableau cible et que cette requête ne définit pas cette valeur, elle sera supprimée. Consultez le point de terminaison « Créer une ligne » pour des instructions sur la façon de formater les définitions de ligne JSON. > **Supported products** > **Required Scopes** # Updates an existing row Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/rows/update-hubdb-draft-rowId specs/2026-09/cms-hubdb-v2026-09.json PATCH /cms/hubdb/2026-09/tables/{tableIdOrName}/rows/{rowId}/draft Mettre à jour partiellement une seule ligne dans la version brouillon du tableau. Il n'est pas nécessaire de spécifier toutes les valeurs de colonne. Seules les colonnes ou les champs à modifier doivent être indiqués. Consultez le point d'accès « Créer une ligne » pour des instructions sur comment formater les définitions de ligne JSON. > **Supported products** > **Required Scopes** # Clone a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/clone-table-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/draft/clone Clonez un tableau HubDB existant. Le `newName` et `newLabel` du nouveau tableau peuvent être envoyés en JSON dans le corps de la requête. Cela créera le tableau cloné en tant que brouillon. > **Supported products** > **Required Scopes** # Create a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/create-table specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables Crée un nouveau brouillon de tableau HubDB selon un schéma JSON. Le nom et le libellé du tableau doivent être uniques pour chaque compte. > **Supported products** > **Required Scopes** # Export a published version of a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/export-table specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/export Exporte la version publiée d'un tableau dans un format spécifié. > **Supported products** > **Required Scopes** # Export a draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/export-table-draft specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/draft/export Exporte la version brouillon d'un tableau au format CSV/EXCEL. > **Supported products** > **Required Scopes** # Return all draft tables Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/get-hubdb-draft specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/draft Affiche les détails de chaque brouillon de tableau défini dans le compte spécifié, y compris les définitions de colonnes. > **Supported products** > **Required Scopes** # Get details for a draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/get-hubdb-draft-tableIdOrName specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName}/draft Obtenez les détails du brouillon d'un tableau HubDB spécifique. Cela inclut les définitions des colonnes dans le tableau et le nombre de lignes dans le tableau. > **Supported products** > **Required Scopes** # Get details of a published table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/get-table specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables/{tableIdOrName} Renvoie les détails de la version publiée du tableau spécifié. Cela inclura les définitions des colonnes dans le tableau et le nombre de lignes dans le tableau. **Remarque :** ce point de terminaison peut être consulté sans aucune authentification si le tableau est défini pour être accessible au public. Pour ce faire, vous devrez inclure l'ID du compte HubSpot dans un paramètre de requête `portalId`. > **Supported products** > **Required Scopes** # Get all published tables Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/get-tables specs/2026-09/cms-hubdb-v2026-09.json GET /cms/hubdb/2026-09/tables Renvoie les détails de la version publiée de chaque tableau défini dans un compte, y compris les définitions de colonnes. > **Supported products** > **Required Scopes** # Import data into draft table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/import-table-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/draft/import Importer le contenu d'un fichier CSV dans un tableau HubDB existant. Les données seront toujours importées dans la version brouillon du tableau. Utilisez le point de terminaison `/publish` pour pousser ces modifications vers la version publiée. Ce point de terminaison prend une requête POST multipart. La première partie sera un ensemble d'options formatées en JSON pour l'importation. Vous pouvez préciser cela avec le nom `config`. La deuxième partie sera le fichier CSV que vous souhaitez importer. Vous pouvez préciser cela avec le nom `file`. Consultez la [section d'aperçu](https://developers.hubspot.com/docs/api/cms/hubdb#importing-tables) pour vérifier les détails et le format des options formatées en JSON pour l'importation. > **Supported products** > **Required Scopes** # Publish a table from draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/publish-table-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/draft/publish Publie le tableau en copiant les données et les modifications du schéma de tableau de la version brouillon à la version publiée, ce qui signifie que toutes les pages du site web utilisant les données du tableau seront mises à jour. > **Supported products** > **Required Scopes** # Reset a table draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/reset-table-draft specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/draft/reset Remplace les données de la version brouillon du tableau par les valeurs de la version publiée. Toute modification non publiée dans le brouillon sera perdue après cette action. > **Supported products** > **Required Scopes** # Unpublish a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/unpublish-table specs/2026-09/cms-hubdb-v2026-09.json POST /cms/hubdb/2026-09/tables/{tableIdOrName}/unpublish Annule la publication du tableau, ce qui signifie que toutes les pages web utilisant des données du tableau ne rendront aucune donnée. > **Supported products** > **Required Scopes** # Archive a table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/delete-table specs/2026-09/cms-hubdb-v2026-09.json DELETE /cms/hubdb/2026-09/tables/{tableIdOrName} Archivez (suppression réversible) un tableau HubDB existant. Cela permet d'archiver les versions publiées et les brouillons. > **Supported products** > **Required Scopes** # Delete a table version Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/delete-table-version specs/2026-09/cms-hubdb-v2026-09.json DELETE /cms/hubdb/2026-09/tables/{tableIdOrName}/versions/{versionId} Supprimer une version spécifique d'un tableau > **Supported products** > **Required Scopes** # Update an existing table Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/hubdb/tables/update-hubdb-draft specs/2026-09/cms-hubdb-v2026-09.json PATCH /cms/hubdb/2026-09/tables/{tableIdOrName}/draft Mettez à jour un tableau HubDB existant. Vous pouvez utiliser ce point de terminaison pour ajouter ou supprimer des colonnes du tableau ainsi que pour restaurer un tableau archivé. Les tableaux mis à jour en utilisant le point de terminaison ne modifieront que la version brouillon du tableau. Utilisez le point de terminaison `publish` pour pousser toutes les modifications vers la version `published`. Pour restaurer un tableau, incluez le paramètre de requête `archived=true` et `"archived": false` dans le corps json. **Remarque :** vous devez inclure toutes les colonnes dans l'entrée lorsque vous ajoutez/supprimez/mettez à jour une colonne. Si vous n'incluez pas une colonne déjà existante dans la requête, elle sera supprimée. > **Supported products** > **Required Scopes** # Batch create properties Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/batch/create-properties specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/properties/{objectType}/batch/create Créer plusieurs propriétés par lot pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison est utile pour configurer efficacement plusieurs propriétés à la fois, réduisant ainsi le besoin de multiples appels d'API individuels. > **Supported products** > **Required Scopes** # Batch archive properties Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/batch/delete-properties specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/properties/{objectType}/batch/archive Archiver plusieurs propriétés pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison est utile pour gérer de grands ensembles de propriétés qui ne sont plus nécessaires ou qui doivent être masquées de l'utilisation active. Il nécessite de spécifier l'ID de l'application et le type d'objet dans les paramètres de chemin. > **Supported products** > **Required Scopes** # Batch read properties Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/batch/get-properties specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/properties/{objectType}/batch/read Récupérer un lot de propriétés pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison est utile pour récupérer efficacement plusieurs propriétés en une seule requête, en particulier lors du traitement de grands jeux de données ou lorsque des propriétés spécifiques sont nécessaires pour le traitement. > **Supported products** > **Required Scopes** # Create Event Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/events/attention-span specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/events/attention-span Créer un nouvel événement de durée d'attention dans le MediaBridgeService. Ce point de terminaison est utilisé pour enregistrer les événements de durée d'attention, ce qui peut être utile pour suivre l'engagement des utilisateurs avec le contenu multimédia. La requête doit inclure un corps JSON valide conforme au schéma AttentionSpanEventRequest. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/events/media-played specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/events/media-played Créer un événement de lecture de média dans le compte HubSpot. Ce point de terminaison est utilisé pour enregistrer la lecture de contenu multimédia, ce qui peut être utile pour suivre l'engagement des utilisateurs avec les ressources multimédias. > **Supported products** > **Required Scopes** # Record Media Played Percentage Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/events/media-played-percent specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/events/media-played-percent Ce point de terminaison vous permet d’enregistrer le pourcentage de média lu. Il est utile pour suivre l’engagement des utilisateurs avec le contenu multimédia, tel que les vidéos ou les fichiers audio, en capturant la mesure dans laquelle le média a été consommé. Ces données peuvent être utilisées pour les analytics et l’amélioration des stratégies de diffusion de contenu. > **Supported products** > **Required Scopes** # API du CMS | Media Bridge Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/guide > **Exigences de portée** L'API de passerelle multimédia permet aux intégrateurs de transférer des objets multimédia tels que des fichiers vidéo et audio ainsi que des données de consommation multimédia dans HubSpot. Elle crée également les fonctionnalités suivantes dans le compte HubSpot de l'utilisateur : * Modules pour intégrer des objets multimédia dans les éditeurs de glisser-déposer de HubSpot pour les pages et les e-mails. * Événements de chronologie CRM indiquant quand les prospects ou les clients ont interagi avec du contenu vidéo, audio et d'autres types de contenu multimédia. * Listes segmentées pour des expériences ciblées et personnalisées. * Workflows pour automatiser les interactions, en fonction des événements de consultation de contenu multimédia. * Rapports pour mesurer l'impact des ressources multimédia. La passerelle multimédia utilise à la fois des objets [personnalisés](/docs/api-reference/crm-custom-objects-v3/guide) et des événements unifiés, le système de suivi des événements de HubSpot. Cela signifie que vous pouvez utiliser à la fois l'API de passerelle multimédia et l'API d'objets personnalisés pour créer votre intégration. ## Utiliser l'API de passerelle multimédia Vous avez besoin d'un [compte de développeur HubSpot](https://developers.hubspot.fr/get-started) pour enregistrer votre application de passerelle multimédia et configurer vos définitions d'objets multimédia initiales avant de connecter votre application au compte d'un utilisateur HubSpot. ## Créer et personnaliser vos définitions d'objet multimédia Pour définir un objet multimédia, effectuez une requête `POST` à `/media-bridge/v1/{appId}/settings/object-definitions`. Dans le corps de la requête, incluez l'une des valeurs de type de média suivantes dans le tableau `mediaTypes` : `VIDEO`, `AUDIO`, `DOCUMENT`, `IMAGE`, ou `OTHER`. Après avoir défini vos objets multimédia, créez et modifiez les propriétés de l'objet multimédia en effectuant une requête `PATCH` à `/media-bridge/v1/{appId}/schemas/{objectType}` et une requête `POST` à `/media-bridge/v1/{appId}/properties/{objectType}`. ## Connecter votre application de passerelle multimédia au compte d'un utilisateur HubSpot Pour connecter votre application de passerelle multimédia au compte d'un utilisateur HubSpot, vous devez créer une définition d'application dans le compte de votre développeur HubSpot. Les définitions d'application incluent : * Des détails tels que le logo et le texte à afficher à l'utilisateur HubSpot lorsque votre intégration tentera de créer une connexion initiale à son compte ; * Les périmètres dont votre intégration a besoin dans le compte HubSpot de l'utilisateur. Pour connecter votre application de passerelle multimédia à un compte utilisateur HubSpot : * Créez une [définition d'application](/docs/apps/legacy-apps/overview) dans votre compte de développeur pour l'application de passerelle multimédia. * Incluez les périmètres suivants lors de la définition de votre application : * `media_bridge.read` * `media_bridge.write` * Utilisez l'authentification [OAuth](/docs/api-reference/auth-oauth-v1/guide) lors de l'authentification des appels effectués par votre application. Découvrez-en davantage sur les [méthodes d'authentification](/docs/apps/developer-platform/build-apps/authentication/overview). Pour vérifier que l'application est correctement installée sur le portail HubSpot d'un client : * Visitez `https://app.hubspot.com/media-bridge-demo/{HubID}`, en remplaçant `{HubID}` par l'ID de compte. * Dans l'angle supérieur droit, cliquez sur le menu déroulant **Application** et sélectionnez votre **application de passerelle multimédia**. * Dans l'application, vous pouvez afficher les types de fichiers multimédia pris en charge par l'application et créer des exemples. Une fois que l'application de passerelle multimédia a été installée sur le portail HubSpot d'un client, vous pouvez : * [Créer des objets multimédia](#create-your-media-objects) * [Créer des modules CMS pour l'intégration de vos objets multimédia](#create-cms-modules-to-embed-media) * [Envoyer des événements multimédia](#send-your-media-events) ## Créer vos objets multimédia Après avoir créé vos définitions d'objet multimédia et installé votre application de passerelle multimédia dans le compte d'un utilisateur, vous pouvez utiliser le [jeton OAuth](/docs/apps/legacy-apps/authentication/working-with-oauth) pour créer et modifier des objets multimédia dans le compte. Étant donné que les objets multimédia sont des objets personnalisés, utilisez les [points de terminaison d'API d'objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide#tab-2) pour les créer : * Effectuez une requête `GET` à `/media-bridge/v1/{appId}/settings/object-definitions/{mediaType}` pour trouver le `objectType`. * Effectuez une requête `POST` à `/crm/v3/objects/{objectType}` pour créer l'objet multimédia dans le compte de l'utilisateur. Un objet multimédia représente un élément de contenu pouvant être intégré dans un système tiers. Une fois qu'un objet multimédia est ajouté à la passerelle multimédia, il peut être intégré dans le contenu CMS de HubSpot et associé aux événements multimédia. Pour les objets multimédia `VIDEO` et `AUDIO`, les tableaux ci-dessous répertorient toutes les propriétés disponibles : Les champs marqués par sont \* obligatoires. | Paramètre | Type | Description | | - | - | - | | `id` | Nombre | Un ID utilisé pour identifier l'élément multimédia spécifique dans le système de passerelle multimédia de HubSpot. Cette propriété est générée automatiquement par HubSpot et ne peut pas être définie par les développeurs. | | `hs_duration` | Nombre | Une durée du contenu multimédia en millisecondes. | | `hs_oembed_url`\* | Chaîne | Une URL qui doit renvoyer une réponse oEmbed valide respectant la [spécification oEmbed](https://oembed.com/#section2). Nécessite un type `video` ou `rich` avec un iFrame en `html`. | | `hs_file_url` | Chaîne | L'URL du fichier multimédia brut. Elle pourra être utilisée à l'avenir à des fins d'intégration sur les réseaux sociaux. | | `hs_thumbnail_url` | Chaîne | L'URL d'une image utilisée comme vignette pour l'intégration de l'élément multimédia dans le contenu La taille idéale pour cette miniature est de 640 x 480 pixels. | | `hs_poster_url` | Chaîne | L'URL d'une image représentant le contenu multimédia. Cette image doit avoir les mêmes dimensions que le média original et peut être utilisée aux endroits où une variable d'image est requise (par exemple quand le média est inséré dans un e-mail). | | `hs_external_id` | Chaîne | L'ID du contenu multimédia dans le système du tiers. Il permet aux intégrateurs de récupérer du contenu multimédia à partir de la passerelle multimédia selon le même ID utilisé dans leur propre système. (Il s'agit du point de terminaison d'API qui exploite ce mappage.) | | `hs_folder_path` | Chaîne | Un chemin d'accès vers l'objet fourni par le fournisseur, désignant l'emplacement de l'objet dans le système de dossiers du tiers (le cas échéant). HubSpot tentera de représenter cette structure de répertoire lors de l'affichage de ces objets à l'utilisateur, mais pourra imbriquer les objets et dossiers de chaque fournisseur dans un dossier de premier niveau nommé en fonction du fournisseur. | | `hs_title`\* | Chaîne | Le nom du contenu multimédia. Il sera affiché dans l'interface utilisateur HubSpot dans des endroits tels que le sélecteur de contenu multimédia. | | `hs_details_page_link` | Chaîne | L'URL qui permet à un utilisateur de visualiser ou d'interagir avec le contenu multimédia dans le système du fournisseur de contenu multimédia. Elle est utilisée dans l'interface utilisateur HubSpot pour permettre aux utilisateurs d'identifier le contenu multimédia sans se baser uniquement sur son titre. | Pour les objets multimédia `IMAGE`, les tableaux ci-dessous répertorient toutes les propriétés disponibles : Les champs marqués par sont \* obligatoires. | Paramètre | Type | Description | | - | - | - | | `id` | Nombre | Un ID utilisé pour identifier l'élément multimédia spécifique dans le système de passerelle multimédia de HubSpot. Cette propriété est générée automatiquement par HubSpot et ne peut pas être définie par les développeurs. | | `hs_oembed_url`\* | Chaîne | Une URL qui doit renvoyer une réponse oEmbed valide respectant la [spécification oEmbed](https://oembed.com/#section2). Nécessite un type `video` ou `rich` avec un iFrame en `html`. | | `hs_file_url`\* | Chaîne | L'URL du fichier multimédia brut. Elle pourra être utilisée à l'avenir à des fins d'intégration sur les réseaux sociaux. | | `hs_thumbnail_url` | Chaîne | L'URL d'une image qui sera utilisée comme vignette pour l'intégration du contenu multimédia dans des endroits tels que le sélecteur de contenu multimédia. La taille idéale pour cette miniature est de 640 x 480 pixels. | | `hs_poster_url` | Chaîne | L'URL d'une image représentant le contenu multimédia. Cette image doit avoir les mêmes dimensions que le média original et peut être utilisée aux endroits où une variable d'image est requise (par exemple quand le média est inséré dans un e-mail). | | `hs_external_id` | Chaîne | L'ID du contenu multimédia dans le système du tiers. Il permet aux intégrateurs de récupérer du contenu multimédia à partir de la passerelle multimédia selon le même ID utilisé dans leur propre système. (Il s'agit du point de terminaison d'API qui exploite ce mappage.) | | `hs_folder_path` | Chaîne | Un chemin d'accès vers l'objet fourni par le fournisseur, désignant l'emplacement de l'objet dans le système de dossiers du tiers (le cas échéant). HubSpot tentera de représenter cette structure de répertoire lors de l'affichage de ces objets à l'utilisateur, mais pourra imbriquer les objets et dossiers de chaque fournisseur dans un dossier de premier niveau nommé en fonction du fournisseur. | | `hs_title`\* | Chaîne | Le nom du contenu multimédia. Il sera affiché dans l'interface utilisateur HubSpot dans des endroits tels que le sélecteur de contenu multimédia. | | `hs_details_page_link` | Chaîne | Une URL qui permet à un utilisateur de visualiser ou d'interagir avec le contenu multimédia dans le système du fournisseur de contenu multimédia. Elle est utilisée dans l'interface utilisateur HubSpot pour permettre aux utilisateurs d'identifier le contenu multimédia sans se baser uniquement sur son titre. | ## Créer des modules de CMS pour intégrer du contenu multimédia Chaque fournisseur d'applications de passerelle multimédia est responsable de la création de son propre [module](/docs/cms/start-building/building-blocks/modules/overview) pour rendre son contenu multimédia dans CMS Hub. Lorsqu'une application de passerelle multimédia est installée dans un compte HubSpot, le [champ d'intégration](/docs/cms/reference/fields/module-theme-fields#embed) du module présente le type de source supplémentaire *Intégration de média*. Cela permet à l'utilisateur de sélectionner du contenu multimédia à partir de l'application installée pour l'intégrer sur sa page de site web. Une fois que l'utilisateur a sélectionné un élément multimédia à intégrer, les éléments `oembed_url` et `oembed_response` du contenu multimédia sont disponibles dans le HubL pour restituer facilement les lecteurs. De plus, les éléments `id` et `media_type` du contenu multimédia sélectionné sont stockés pour permettre l'interrogation de l'objet CRM sous-jacent via la fonction HubL `crm_objects`. Cela peut être utilisé pour récupérer une ou toutes les propriétés qui font partie d'un objet multimédia. Exemple d'utilisation de la fonction HubL crm\_objects avec un objet multimédia dont les identifiants sont **459** et **922** : `{% set objects = crm_objects("a123_Videos", [459,922]) %} {{ objects }}` Pour récupérer une image spécifique avec le même objet : `{% set object = crm_object("a123_Images", 459) %} {{ object }}` Les applications peuvent récupérer le type d'objet (« a123\_Videos » dans l'exemple) en effectuant une requête `GET` à `/media-bridge/{appId}/settings/object-definitions/{mediaType}`. Les développeurs doivent utiliser les points de terminaison de l'[API de code source du CMS](/docs/api-reference/cms-source-code-v3/guide) pour insérer leur code de module personnalisé dans les comptes des clients une fois que ceux-ci se sont connectés via oAuth. Une fois que le code du module est inséré dans le compte du client, il pourra automatiquement commencer à utiliser le module du développeur dans son contenu. ### Configurer un domaine oEmbed Pour utiliser la fonction HubL [oEmbed](/docs/cms/reference/hubl/functions#oembed), le domaine utilisé pour récupérer la réponse oEmbed doit être enregistré en effectuant une requête à `/media-bridge/v1/{appId}/settings/oembed-domains`. Les paramètres suivants doivent être inclus : * **Schéma :** la structure d'URL pour les URL de contenu multimédia. Cette structure d'URL est utilisée pour faire associer l'URL transmise dans la fonction HubL oEmbed à votre API oEmbed. Les caractères génériques sont pris en charge avec `*` (par exemple : `www.domain.com/*`). * **URL :** l'URL de votre API oEmbed. L du contenu multimédia est transmise à cette URL via un paramètre `URL`. * **Découverte (booléen) :** détermine si votre API oEmbed prend en charge la fonctionnalité [Découverte](https://oembed.com/#section4) de oEmbed. Par défaut, les domaines oEmbed enregistrés seront mis à disposition de tous les clients ayant installé votre application. Si vous disposez de domaines personnalisés propres à chaque client, vous pouvez spécifier dans quel compte un domaine oEmbed doit être autorisé à être utilisé en transmettant une valeur `portalId` dans la requête d'API lors de la configuration du domaine oEmbed. Cela garantira que seul le compte HubSpot spécifié peut utiliser ce domaine oEmbed. ## Créer un module personnalisé Pour créer un module personnalisé : * Accédez à **Marketing** > **Fichiers et modèles** > **Outils de conception**. * Dans l'angle supérieur gauche, cliquez sur **Fichier** > **Nouveau fichier**. * Dans la boîte de dialogue, cliquez sur le menu déroulant **Que souhaiteriez-vous créer aujourd'hui ?** et sélectionnez **Module**. * Cliquez sur **Suivant**. * Sélectionnez la case à cocher à côté de chaque type de contenu où votre module sera utilisé : *pages*, *articles de blog*, *listings de blog*, *e-mails* ou *devis*. Les modules utilisés dans les modèles d'e-mails ne peuvent pas inclure de code CSS ou JavaScript. * Indiquez si ce module sera un **module local** ou un **module global**. Si vous créez un [module global](https://knowledge.hubspot.com/fr/design-manager/use-global-content-across-multiple-templates), la modification du contenu de ce module actualisera chaque emplacement où le module est utilisé. * Saisissez un **nom de fichier** pour votre module, puis cliquez sur **Créer**. * Dans la section *Champs* à droite, cliquez sur le menu déroulant **Ajouter un champ** et sélectionnez **Intégrer**. ![](https://lh3.googleusercontent.com/_cARgVZZLUD-nsJUIaG8XMUdSm1GRLr4Gfw96HeZ6SyXFG0t6yiiPKt5ToSe7nq8arSnG569_wg5X2XsD0XEtmEGiX9sbQxH7deUIJKGshXamME6vXrLN2oVSAt-cmrkTN2nggDsdkChDnEOxKrw5mo) * Dans la section *Types de sources pris en charge*, sélectionnez **Intégration de média**. * Dans la section *Contenu intégré par défaut*, cliquez sur **Sélectionner à partir de \[application de passerelle multimédia]**. * Dans le panneau de droite, sélectionnez le **contenu multimédia** que vous souhaitez intégrer dans le module. * Définissez les options d'éditeur, conditions d'affichage du champ et options de répéteur de champ. * Dans *Nom de variable HubL*, cliquez sur **Copier** > **Copier le bloc de texte**. * Collez le bloc de texte dans la section *module.html*. * Pour prévisualiser l'apparence du module sur votre page, cliquez sur **Aperçu**. * Dans la section de gauche, cliquez sur **Sélectionner à partir de \[application de passerelle multimédia]**, puis sélectionnez le **contenu multimédia** que vous souhaitez prévisualiser. ## Envoyer vos événements multimédia Un événement média est un événement qui se produit par rapport à un objet multimédia, comme un événement de lecture. Une fois qu'un événement multimédia est envoyé à l'application de passerelle multimédia, il peut être utilisé dans les rapports et dans les cartes CRM de chronologie. Il existe trois types d'événement multimédia : * **Événement Lu :** indique lorsqu'un utilisateur a commencé à lire un contenu multimédia. Cet événement est disponible à la fois sur la chronologie du contact et dans l'outil Rapports. * **Événement Quartile :** indique lorsqu'un utilisateur a atteint des étapes (0 %, 25 %, 50 %, 75 %, 100 %) concernant le volume de contenu multimédia consulté. Cet événement est uniquement disponible sur la chronologie du contact. * **Événement Niveau d'attention** : indique lorsqu'un utilisateur a entièrement consulté un contenu multimédia ou une fois qu'il a terminé sa session. Cet événement est uniquement disponible dans l'outil Rapports. Les événements peuvent être envoyés en effectuant une requête `POST` à `/media-bridge/v2/events/media-played`, `/media-bridge/v2/events/media-played-percent` et `/media-bridge/v2/events/attention-span respectively`. Pour que les événements multimédia soient affichés sur la chronologie de contact de l'utilisateur dans HubSpot, un événement lu doit être envoyé à l'application de passerelle multimédia pour chaque session. Les événements d'une seule session seront affichés dans une carte sur la chronologie d'activité du contact. Lorsque les événements sont envoyés à l'aide des points de terminaison d'événements v2, ils sont traités de manière asynchrone, contrairement à ceux envoyés via les points de terminaison v1. À ce titre, nous recommandons ce qui suit : * La version v1 des points de terminaison doit être utilisée pour n'importe quel test car une requête erronée sera immédiatement supprimée. * La version v2 des points de terminaison doit être utilisée en production car sa nature asynchrone permettra d'éviter les retards dans l'environnement client pendant que l'événement est rédigé sur la passerelle multimédia. Les événements sont également conservés et retentés en cas de défaillance temporaire du serveur de la passerelle multimédia. ### Connecter un événement à une fiche d'informations de contact Pour connecter un événement multimédia à une fiche d'informations de contact, les intégrateurs doivent fournir le `contactId` ou un `contactUtk`. Si seul un élément `contactUtk` est fourni, il sera converti en `contactId`. Si les deux sont fournis dans la requête, le `contactId` sera utilisé comme le centre unique d'informations. Ce paramètre permet à l'application de passerelle multimédia de créer une association entre la fiche d'informations de contact et l'événement. Une fois l'évènement multimédia connecté à la fiche d'informations de contact, il peut être utilisé dans des [rapports d'objets croisés](https://knowledge.hubspot.com/fr/reports/create-reports-with-the-custom-report-builder). Ainsi, les clients pourront associer leurs événements multimédia à des fiches d'informations de contact ainsi qu'à des entreprises et transactions associées. ### Connexion d'un événement à un contenu média Pour associer un événement multimédia à un contenu multimédia, les paramètres `mediaID` ou `externalID` doivent être inclus dans la requête. Si les deux sont fournis, le `mediaID` sera utilisé comme le centre unique d'informations. > [!WARNING] > > ### Remarque : > > HubSpot ne prend en charge que les associations des événements *Lu* et *Quartile* avec un contenu multimédia. ### Connecter un événement à une page Pour associer un évènement multimédia à une page HubSpot, les paramètres suivants doivent être inclus dans la requête : * Si la page est hébergée sur CMS Hub, le `pageId` doit être fourni. * Si la page n'est pas hébergée sur CMS Hub, le `pageName` et le `pageUrl` doivent être inclus. Le tableau ci-dessous présente les propriétés prises en charge pour les trois événements multimédia : | Propriété | Type d'événement | Description | | - | - | - | | `mediaBridgeObjectId` | Tous les événements | L'ID du contenu multimédia auquel cet événement est relié. | | `externalId` | Chaîne | L'ID du contenu multimédia dans le système du tiers. Il permet aux développeurs de mentionner le contenu multimédia dans la passerelle multimédia selon le même ID utilisé dans leur propre système Il peut être utilisé à la place de `mediaBridgeObjectId` dans les événements. Si un `externalId` et un `mediaBridgeObjectId` sont fournis, le `mediaBridgeObjectId` sera utilisé et le externalId sera ignoré. | | `sessionId` | Tous les événements | Un identifiant unique pour désigner une session de visualisation. Cela peut signifier différentes choses pour différents fournisseurs. HubSpot laisse les fournisseurs décider de ce qu'une session signifie pour eux. Il sera utilisé pour regrouper des événements qui se sont déroulés dans la même session. L'identifiant devrait être généré par le système du tiers. | | `contactId` | Tous les événements | L'identifiant du contact dans le système de HubSpot qui a consulté le contenu multimédia. Cela peut être récupéré à l'aide de l'[API Get contact by usertoken (utk) de HubSpot](https://developers.hubspot.fr/docs/reference/api/crm/objects/contacts/v1#get-a-contact-by-its-user-token). L'API prend également en charge la fourniture d'un jeton d'utilisateur et gérera la conversion automatique de celui-ci en ID de contact. | | `contactUtk` | Tous les événements | Le jeton d'utilisateur (utk) qui identifie quel contact a consulté le contenu multimédia. | | `pageId` | Tous les événements | L'ID de contenu de la page sur laquelle un événement s'est produit. | | `pageName` | Tous les événements | Le nom ou le titre de la page sur laquelle un événement s'est produit. | | `pageUrl` | Tous les événements | LURL de la page sur laquelle un événement s'est produit. | | `occurredTimestamp` | Tous les événements | L'horodatage auquel cet événement s'est produit (en millisecondes epoch). | | `rawDataString / rawDataMap` | Niveau d'attention | Ce sont les données brutes qui fournissent les données les plus granulaires sur les niveaux du contenu multimédia ainsi que sur le nombre de consultations de chaque niveau par l'utilisateur. Par exemple, pour une vidéo de 10 secondes où chaque seconde est un niveau, si un visiteur regarde les 5 premières secondes de la vidéo, puis redémarre la vidéo et regarde les 2 premières secondes à nouveau, l'élément `rawDataString` résultant sera `“0=2;1=2;2=1;3=1;4=1;5=0;6=0;7=0;8=0;9=0;”`. | | `totalPercentPlayed` | Niveau d'attention | Le pourcentage du contenu multimédia consulté par l'utilisateur. Les fournisseurs peuvent calculer cela différemment en fonction de la façon dont ils considèrent les vues répétées de la même portion du contenu multimédia. Pour cette raison, l'API ne tentera pas de valider totalPercentWatched par rapport aux informations de niveau d'attention de l'événement. S'il est manquant, HubSpot calculera cela à partir de la carte de niveau d'attention comme suit : (nombre de niveaux avec une valeur supérieure ou égale à 1)/(nombre total de niveaux). | | `totalSecondsPlayed` | Niveau d'attention | Les secondes qu'un utilisateur a passées à consulter le contenu multimédia. La passerelle multimédia calcule cela comme suit : `totalPercentPlayed`\*`mediaDuration`. Si un fournisseur souhaite que cela soit calculé différemment, il peut fournir la valeur précalculée lorsqu'il crée l'événement. | | `playedPercent` | Événement Quartile | Une valeur de pourcentage de quartile (0, 25, 50, 75, 100) pour la quantité de contenu multimédia qui a été consultée jusqu'à présent. | | `iframeUrl` | Événement Lu | Une URL qui peut être utilisée pour afficher des données provenant d'un système externe via un iFrame. Une fois inclus, l'événement sur la chronologie de contact affichera un lien vers une fenêtre modale qui affichera le contenu de iFrame en cliquant dessus. | | `mediaType` | Chaîne | Le type multimédia auquel l'événement appartient (par exemple : VIDEO ou AUDIO). Cela nous permet d'assigner correctement l'événement aux bons objets lorsqu'un fournisseur prend en charge plusieurs types de contenu multimédia. | # Set up a new oEmbed domain Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/configure-oembed-domain specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/settings/oembed-domains Créer un nouveau paramètre de domaine oEmbed pour une application spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de définir les domaines qui peuvent être utilisés à des fins oEmbed, facilitant ainsi l'intégration de contenu multimédia provenant de sources externes. > **Supported products** # Delete an oEmbed domain Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/delete-oembed-domain specs/2026-09/cms-media-bridge-v2026-09.json DELETE /media-bridge/2026-09/{appId}/settings/oembed-domains Supprimer les domaines oEmbed associés à une application spécifique dans HubSpot. Cette opération vous permet de gérer et de supprimer les domaines qui ne sont plus nécessaires pour l'intégration de contenu multimédia dans les paramètres de l'application. > **Supported products** # Get object types for a supported media Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/get-object-types specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/settings/object-definitions/{mediaType} Récupérer les définitions d'objet pour un type de média spécifié au sein d'une application. Ce point de terminaison vous permet d'accéder aux paramètres liés aux définitions d'objet de divers types de médias tels que VIDÉO, AUDIO, DOCUMENT, AUTRE et IMAGE. Il est utile pour comprendre la structure et les propriétés associées aux différents types de médias dans votre application. > **Supported products** # Get an oEmbed domain Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/get-oembed-domain specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/settings/oembed-domains/{oEmbedDomainId} Récupérer les détails d'un domaine oEmbed spécifique pour une application donnée. Ce point de terminaison est utile pour récupérer la configuration ou les paramètres liés aux domaines oEmbed associés à une application particulière. > **Supported products** # Update the media bridge app name Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/update-app-name specs/2026-09/cms-media-bridge-v2026-09.json PUT /media-bridge/2026-09/{appId}/settings Mettre à jour les paramètres d'une application spécifique dans le mediabridgeservice. Ce point de terminaison vous permet de modifier les paramètres de configuration associés à l'appId spécifiée. Il est utile pour mettre à jour les paramètres spécifiques à l'application afin de garantir qu'ils correspondent à vos exigences actuelles. > **Supported products** # Update an oEmbed domain Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/integrator-settings/update-oembed-domain specs/2026-09/cms-media-bridge-v2026-09.json PATCH /media-bridge/2026-09/{appId}/settings/oembed-domains/{oEmbedDomainId} Mettez à jour les paramètres d'un domaine oEmbed spécifique associé à une application donnée. Ce point de terminaison vous permet de modifier la configuration d'un domaine oEmbed, ce qui peut être utile pour gérer la manière dont le contenu multimédia est intégré sur différents domaines. > **Supported products** # Create property Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/create-property specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/properties/{objectType} Créer une nouvelle propriété pour un type d'objet spécifié au sein d'une application donnée dans le service MediaBridge. Ce point de terminaison vous permet de définir de nouvelles propriétés qui peuvent être utilisées pour stocker des informations supplémentaires relatives au type d'objet. La requête doit inclure les détails nécessaires de la propriété dans le corps de la requête. > **Supported products** > **Required Scopes** # Create Group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/create-property-group specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/properties/{objectType}/groups Créer un nouveau groupe de propriétés pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison vous permet d'organiser les propriétés en groupes, ce qui facilite leur gestion et leur catégorisation au sein de votre application. > **Supported products** > **Required Scopes** # Delete property Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/delete-property specs/2026-09/cms-media-bridge-v2026-09.json DELETE /media-bridge/2026-09/{appId}/properties/{objectType}/{propertyName} Supprimer une propriété spécifique d'un type d'objet donné au sein d'une application. Cette opération est utile pour supprimer les propriétés qui ne sont plus nécessaires ou qui ont été créées par erreur. Le point de terminaison nécessite de spécifier l'ID de l'application, le type d'objet et le nom de la propriété pour identifier la propriété à supprimer. > **Supported products** > **Required Scopes** # Delete group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/delete-property-group specs/2026-09/cms-media-bridge-v2026-09.json DELETE /media-bridge/2026-09/{appId}/properties/{objectType}/groups/{groupName} Supprimer un groupe de propriétés spécifique pour un type d'objet donné au sein d'une application. Cette opération est utile pour supprimer les groupes de propriétés inutiles ou obsolètes, ce qui contribue à maintenir une structure propre et organisée au sein des propriétés de votre application. > **Supported products** > **Required Scopes** # Retrieve properties Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/get-properties specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/properties/{objectType} Récupérez les propriétés d'un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison vous permet de filtrer les propriétés en fonction de leur archivage et de spécifier les propriétés à inclure dans la réponse. Il est utile pour accéder et gérer les propriétés associées aux différents types d'objets dans votre application. > **Supported products** > **Required Scopes** # Retrieve property Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/get-property-details specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/properties/{objectType}/{propertyName} Récupérer une propriété spécifique pour un type d'objet donné au sein d'une application spécifiée. Ce point de terminaison vous permet d'accéder aux détails d'une propriété, y compris sa configuration et ses paramètres, pour un type d'objet particulier identifié par le nom de la propriété. Cela peut être utile pour comprendre les configurations de propriété ou à des fins d'intégration. > **Supported products** > **Required Scopes** # Retrieve group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/get-property-group specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/properties/{objectType}/groups/{groupName} Récupérer un groupe de propriétés spécifique pour un type d'objet donné au sein d'une application. Ce point de terminaison est utile pour accéder à des informations détaillées sur la manière dont les propriétés sont regroupées sous un nom de groupe spécifique pour un type d'objet particulier dans votre application. > **Supported products** > **Required Scopes** # List groups Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/get-property-groups specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/properties/{objectType}/groups Récupère une liste de groupes de propriétés pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison est utile pour obtenir des informations organisationnelles sur les propriétés associées aux différents types d'objets dans votre application. > **Supported products** > **Required Scopes** # Update property Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/update-property specs/2026-09/cms-media-bridge-v2026-09.json PATCH /media-bridge/2026-09/{appId}/properties/{objectType}/{propertyName} Mettre à jour une propriété existante pour un type d'objet spécifié au sein d'une application donnée. Cette opération vous permet de modifier les détails d'une propriété, tels que son libellé, son type ou sa description, afin de mieux répondre aux exigences de votre application. > **Supported products** > **Required Scopes** # Update group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/properties/update-property-group specs/2026-09/cms-media-bridge-v2026-09.json PATCH /media-bridge/2026-09/{appId}/properties/{objectType}/groups/{groupName} Mettre à jour les propriétés d'un groupe spécifique au sein d'un type d'objet donné pour une application spécifiée. Cette opération vous permet de modifier les détails d'un groupe de propriétés, tels que son libellé ou son ordre d'affichage, dans le contexte du service MediaBridge. > **Supported products** > **Required Scopes** # Create associations Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/create-association-definition specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/schemas/{objectType}/associations Créer de nouvelles associations pour un type d'objet spécifié au sein d'une application donnée. Ce point de terminaison vous permet de définir des relations entre différents types d'objets, améliorant ainsi la connectivité et l'intégration des données au sein de votre compte HubSpot. > **Supported products** > **Required Scopes** # Create Object Definitions Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/create-object-type specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/settings/object-definitions Créer de nouvelles définitions d'objet pour une application spécifique dans le HubSpot Media Bridge. Ce point de terminaison est utilisé pour définir de nouveaux objets qui peuvent être utilisés au sein de l'application, permettant la personnalisation et l'intégration de fonctionnalités liées aux médias. > **Supported products** > **Required Scopes** # Define Video Association Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/create-video-association-definition specs/2026-09/cms-media-bridge-v2026-09.json POST /media-bridge/2026-09/{appId}/settings/video-association-definition Créer une définition d'association vidéo pour une application spécifique dans le HubSpot Media Bridge. Ce point de terminaison est utilisé pour définir comment les vidéos sont associées à d'autres objets au sein de l'application spécifiée. Il est particulièrement utile pour les applications qui doivent gérer le contenu vidéo et ses relations de manière programmatique. > **Supported products** > **Required Scopes** # Delete association Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/delete-association-definition specs/2026-09/cms-media-bridge-v2026-09.json DELETE /media-bridge/2026-09/{appId}/schemas/{objectType}/associations/{associationId} Supprimer une association existante entre des schémas pour une application spécifiée dans le service MediaBridge. Cette opération est utile lorsque vous devez dissocier des entités qui ne sont plus liées ou nettoyer des associations obsolètes. > **Supported products** > **Required Scopes** # Retrieve schemas Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/get-schemas specs/2026-09/cms-media-bridge-v2026-09.json GET /media-bridge/2026-09/{appId}/schemas Récupérer les schémas associés à une application spécifique dans le compte HubSpot. Ce point de terminaison vous permet de récupérer les détails du schéma, ce qui peut être utile pour comprendre la structure des données et les propriétés associées à l'application. Vous pouvez éventuellement filtrer les résultats pour inclure uniquement les schémas archivés. > **Supported products** > **Required Scopes** # Update schema Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/media-bridge/schemas/update-schema specs/2026-09/cms-media-bridge-v2026-09.json PATCH /media-bridge/2026-09/{appId}/schemas/{objectType} Mettre à jour le schéma d'un type d'objet spécifique au sein d'une application donnée. Cette opération vous permet de modifier les détails du schéma existant, ce qui peut être utile pour s'adapter aux changements des exigences de structure de données ou de la logique métier. > **Supported products** > **Required Scopes** # Pages API Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/guide # Create a new A/B test variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/ab-tests/create-variation specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/ab-test/create-variation Créez une nouvelle variante de test A/B sur la base des informations fournies dans le corps de la requête. > **Supported products** > **Required Scopes** # End an active A/B test Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/ab-tests/end-ab-test specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/ab-test/end Mettre fin à un test A/B actif et désigner un vainqueur. > **Supported products** > **Required Scopes** # Rerun a previous A/B test Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/ab-tests/rerun-ab-test specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/ab-test/rerun Relancez un test A/B précédent. > **Supported products** > **Required Scopes** # Delete landing pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/batch/archive-landing-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/batch/archive Supprimer les pages de destination spécifiées par leur ID dans le corps de la requête. Remarque : cette fonction n'est pas la même que la fonction `archive` du tableau de bord. Pour effectuer un `archive` de tableau de bord, envoyez une mise à jour normale avec le champ `archivedInDashboard` défini sur Vrai. > **Supported products** > **Required Scopes** # Create landing pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/batch/create-landing-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/batch/create Créer un lot de pages de destination comme cela est détaillé dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve landing pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/batch/read-landing-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/batch/read Récupérer un lot de pages de destination comme cela est spécifié dans le corps de la requête. > **Supported products** > **Required Scopes** # Update landing pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/batch/update-landing-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/batch/update Mettre à jour un lot de pages de destination selon le corps de la requête. > **Supported products** > **Required Scopes** # Clone a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/clone-landing-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/clone Créer une copie d'une page de destination existante. > **Supported products** > **Required Scopes** # Create a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/create-landing-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages Créer une nouvelle page de destination. > **Supported products** > **Required Scopes** # Delete a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/delete-landing-page specs/2026-09/cms-pages-v2026-09.json DELETE /cms/pages/2026-09/landing-pages/{objectId} Supprimer une page de destination, spécifiée par son ID. > **Supported products** > **Required Scopes** # Retrieve a landing page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/drafts/get-landing-page-draft specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/{objectId}/draft Récupérez la version brouillon complète d'une page de destination, spécifiée par l'ID de la page. > **Supported products** > **Required Scopes** # Publish a landing page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/drafts/publish-landing-page-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/{objectId}/draft/push-live Reprenez toutes les modifications de la version brouillon de la page de destination et appliquez-les à la version en ligne. > **Supported products** > **Required Scopes** # Reset a landing page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/drafts/reset-landing-page-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/{objectId}/draft/reset Ignore les modifications et rétablit le brouillon pour qu'il corresponde à la version en ligne. > **Supported products** > **Required Scopes** # Update the draft of a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/drafts/update-landing-page-draft specs/2026-09/cms-pages-v2026-09.json PATCH /cms/pages/2026-09/landing-pages/{objectId}/draft Mettez partiellement à jour la version brouillon d'une page de destination unique, spécifiée par son ID. Vous n'avez besoin de spécifier les valeurs de colonne que vous modifiez. > **Supported products** > **Required Scopes** # Archive folders Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/batch-archive-folders specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders/batch/archive Supprimer un lot de dossiers comme cela est spécifié dans le corps de la requête. > **Supported products** > **Required Scopes** # Create folders Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/batch-create-folders specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders/batch/create Créer un lot de dossiers comme cela est détaillé dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve folders Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/batch-read-folders specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders/batch/read Récupérer un lot de dossiers de pages de destination tels qu'ils sont identifiés dans le corps de la requête. > **Supported products** > **Required Scopes** # Update folders Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/batch-update-folders specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders/batch/update Mettre à jour un lot de dossiers de pages de destination comme cela est spécifié dans le corps de la requête. > **Supported products** > **Required Scopes** # Create a landing page folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/create-folder specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders Créer un nouveau dossier pour les pages de destination. > **Supported products** > **Required Scopes** # Delete a landing page folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/delete-folder specs/2026-09/cms-pages-v2026-09.json DELETE /cms/pages/2026-09/landing-pages/folders/{objectId} Supprimer un dossier de pages de destination, spécifié par son ID. > **Supported products** > **Required Scopes** # Retrieve a landing page folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/get-folder specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/folders/{objectId} Récupérer un dossier de page de destination, spécifié par son ID. > **Supported products** > **Required Scopes** # Retrieve a previous version of a folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/get-folder-revision specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/folders/{objectId}/revisions/{revisionId} Récupérez une version précédente d'un dossier, spécifiée par l'ID du dossier et l'ID de révision. > **Supported products** > **Required Scopes** # Retrieves previous versions of a folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/get-folder-revisions specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/folders/{objectId}/revisions Récupère toutes les versions antérieures d'un dossier de page de destination. > **Supported products** > **Required Scopes** # Get all landing page folders Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/get-folders specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/folders Obtenez la liste des dossiers de pages de destination. Prend en charge la pagination et le filtrage. Cette méthode serait utile pour une intégration qui examine ces modèles et utilise un service externe pour suggérer des modifications. > **Supported products** > **Required Scopes** # Restore a previous version of a folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/restore-folder-revision specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/folders/{objectId}/revisions/{revisionId}/restore Rétablit une version spécifiée d'un dossier de page de destination. > **Supported products** > **Required Scopes** # Update a landing page folder Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/folders/update-folder specs/2026-09/cms-pages-v2026-09.json PATCH /cms/pages/2026-09/landing-pages/folders/{objectId} Mettre à jour partiellement un dossier de page de destination, spécifié par l'ID du dossier. Vous n'avez besoin de spécifier que les valeurs de détails que vous modifiez. > **Supported products** > **Required Scopes** # Retrieve a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/get-landing-page specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/{objectId} Récupérer une page de destination, spécifiée par son ID. > **Supported products** > **Required Scopes** # Get all landing pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/get-landing-pages specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages Récupérez une liste de pages de destination dans votre compte HubSpot. Ce point de terminaison vous permet de filtrer les pages de destination en fonction des horodatages de création et de mise à jour, de les trier et de parcourir les résultats par pagination. Vous pouvez également choisir d'inclure les pages archivées ou de spécifier certaines propriétés à inclure dans la réponse. > **Supported products** > **Required Scopes** # Add a landing page to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/multi-language/attach-to-lang-group specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/multi-language/attach-to-lang-group Associez une page de destination à un groupe multilingue. > **Supported products** > **Required Scopes** # Create a new language variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/multi-language/create-language-variation specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/multi-language/create-language-variation Créez une nouvelle variation linguistique à partir d'une page de destination existante. La variation sera une copie de l'état brouillon de la page source. Pour prévisualiser le contenu, vous pouvez [récupérer le brouillon de la page de destination source](/api-reference/latest/cms/pages/landing-pages/drafts/get-landing-page-draft). > **Supported products** > **Required Scopes** # Remove a landing page from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/multi-language/detach-from-lang-group specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/multi-language/detach-from-lang-group Dissociez une page de destination d'un groupe multilingue. > **Supported products** > **Required Scopes** # Set a new primary language Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/multi-language/set-new-lang-primary specs/2026-09/cms-pages-v2026-09.json PUT /cms/pages/2026-09/landing-pages/multi-language/set-new-lang-primary Définissez une page de destination comme langue principale d'un groupe multilingue. > **Supported products** > **Required Scopes** # Update languages of multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/multi-language/update-languages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/multi-language/update-languages Définissez explicitement les nouvelles langues pour chaque page de destination dans un groupe multilingue. > **Supported products** > **Required Scopes** # Retrieve a previous version of a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/revisions/get-landing-page-revision specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId} Récupérez une version précédente d'une page de destination, spécifiée par l'ID de page et l'ID de révision. > **Supported products** > **Required Scopes** # Retrieve all previous versions of a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/revisions/get-landing-page-revisions specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/landing-pages/{objectId}/revisions Récupérez toutes les versions précédentes d'une page de destination, spécifiée par l'ID de la page. > **Supported products** > **Required Scopes** # Restore a previous version of a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/revisions/restore-landing-page-revision specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}/restore Rétablit une version précédente d'une page de destination, spécifiée par l'ID de la page et l'ID de révision. > **Supported products** > **Required Scopes** # Restore a previous version of a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/revisions/restore-landing-page-to-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}/restore-to-draft Indiquer une version précédente d'une page de destination à définir comme page de brouillon. > **Supported products** > **Required Scopes** # Schedule landing page publishing Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/schedule-landing-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/landing-pages/schedule Programmez la publication d'une page de destination. > **Supported products** > **Required Scopes** # Update a landing page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/landing-pages/update-landing-page specs/2026-09/cms-pages-v2026-09.json PATCH /cms/pages/2026-09/landing-pages/{objectId} Espace les mises à jour d'un seul objet Page de destination identifié par l'ID dans le chemin d'accès. Vous devez seulement préciser les valeurs de colonne que vous modifiez. > **Supported products** > **Required Scopes** # Create a new A/B test variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/ab-tests/create-variation specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/ab-test/create-variation Créez une nouvelle variante de test A/B sur la base des informations fournies dans le corps de la requête. > **Supported products** > **Required Scopes** # End an active A/B test Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/ab-tests/end-ab-test specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/ab-test/end Mettre fin à un test A/B actif et désigner un vainqueur. > **Supported products** > **Required Scopes** # Rerun a previous A/B test Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/ab-tests/rerun-ab-test specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/ab-test/rerun Relancez un test A/B précédent. > **Supported products** > **Required Scopes** # Delete site pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/batch/archive-website-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/batch/archive Supprimer un lot de pages de site web comme cela est précisé dans le corps de la requête. Remarque : cette fonction n'est pas la même que la fonction `archive` du tableau de bord. Pour exécuter une `archive` de tableau de bord, envoyez une mise à jour normale avec le champ `archivedInDashboard` réglé sur `true`. > **Supported products** > **Required Scopes** # Create site pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/batch/create-website-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/batch/create Créer un lot de pages de site web comme cela est précisé dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve site pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/batch/read-website-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/batch/read Récupérer un lot de pages de site web comme cela est précisé dans le corps de la requête. > **Supported products** > **Required Scopes** # Update site pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/batch/update-website-pages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/batch/update Mettre à jour un lot de pagesde site web comme cela est précisé dans le corps de la requête. > **Supported products** > **Required Scopes** # Clone a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/clone-website-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/clone Créer une copie d'une page de site web existante. > **Supported products** > **Required Scopes** # Create a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/create-website-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages Créer une nouvelle page de site web. > **Supported products** > **Required Scopes** # Delete a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/delete-website-page specs/2026-09/cms-pages-v2026-09.json DELETE /cms/pages/2026-09/site-pages/{objectId} Supprimer une page de site web, spécifiée par son ID. > **Supported products** > **Required Scopes** # Retrieve a site page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/drafts/get-website-page-draft specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/site-pages/{objectId}/draft Récupérez la version brouillon complète d'une page de site web, spécifiée par son ID. > **Supported products** > **Required Scopes** # Publish a site page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/drafts/publish-website-page-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/{objectId}/draft/push-live Reprenez toutes les modifications de la version brouillon de la page de site web et appliquez-les à la version en ligne. > **Supported products** > **Required Scopes** # Reset a site page draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/drafts/reset-website-page-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/{objectId}/draft/reset Ignore les modifications et rétablit le brouillon pour qu'il corresponde à la version en ligne. > **Supported products** > **Required Scopes** # Update the draft of a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/drafts/update-website-page-draft specs/2026-09/cms-pages-v2026-09.json PATCH /cms/pages/2026-09/site-pages/{objectId}/draft Mettez partiellement à jour la version brouillon d'une page de site web, spécifiée par l'ID de page. Vous n'avez besoin de spécifier les valeurs que pour les détails que vous modifiez. > **Supported products** > **Required Scopes** # Retrieve a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/get-website-page specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/site-pages/{objectId} Récupérer une page de site web par son ID. > **Supported products** > **Required Scopes** # Get all site pages Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/get-website-pages specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/site-pages Récupérez toutes les pages de site web. Prend en charge la pagination et le filtrage. Cette méthode serait utile pour une intégration qui examine ces modèles et utilise un service externe pour suggérer des modifications. > **Supported products** > **Required Scopes** # Add a site page to a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/multi-language/attach-to-lang-group specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/multi-language/attach-to-lang-group Associez une page de site à un groupe multilingue. > **Supported products** > **Required Scopes** # Create a new language variation Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/multi-language/create-language-variation specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/multi-language/create-language-variation Créez une nouvelle variation de langue à partir d'une page de site web existante. La variation sera une copie de l'état de brouillon de la page source. Pour prévisualiser le contenu, vous pouvez [récupérer le brouillon de la page de site web source](/api-reference/latest/cms/pages/website-pages/drafts/get-website-page-draft). > **Supported products** > **Required Scopes** # Remove a site page from a multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/multi-language/detach-from-lang-group specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/multi-language/detach-from-lang-group Retirer une page de site web d'un groupe multilingue. > **Supported products** > **Required Scopes** # Set a new primary language Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/multi-language/set-new-lang-primary specs/2026-09/cms-pages-v2026-09.json PUT /cms/pages/2026-09/site-pages/multi-language/set-new-lang-primary Définissez une page de site comme langue principale d'un groupe multilingue. > **Supported products** > **Required Scopes** # Update languages of multi-language group Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/multi-language/update-languages specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/multi-language/update-languages Définissez explicitement les nouvelles langues pour chaque page de site dans un groupe multilingue. > **Supported products** > **Required Scopes** # Retrieve a previous version of a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/revisions/get-website-page-revision specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/site-pages/{objectId}/revisions/{revisionId} Récupérez une version précédente d'une page de site web par l'ID de révision. > **Supported products** > **Required Scopes** # Retrieve all previous versions of a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/revisions/get-website-page-revisions specs/2026-09/cms-pages-v2026-09.json GET /cms/pages/2026-09/site-pages/{objectId}/revisions Récupère toutes les versions précédentes d'une page de site web, spécifiée par l'ID de la page. > **Supported products** > **Required Scopes** # Restore a previous version of a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/revisions/restore-website-page-revision specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/{objectId}/revisions/{revisionId}/restore Restaurez une page de site web à une version précédente, spécifiée par l'ID de page et l'ID de version. > **Supported products** > **Required Scopes** # Restore a previous version of a site page to draft Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/revisions/restore-website-page-to-draft specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/{objectId}/revisions/{revisionId}/restore-to-draft Prendre une version spécifiée d'une page de site web et la définir comme la nouvelle version brouillon de la page. > **Supported products** > **Required Scopes** # Schedule site page publishing Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/schedule-website-page specs/2026-09/cms-pages-v2026-09.json POST /cms/pages/2026-09/site-pages/schedule Programmez la publication d'une page de site web à une date ultérieure. > **Supported products** > **Required Scopes** # Update a site page Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/pages/website-pages/update-website-page specs/2026-09/cms-pages-v2026-09.json PATCH /cms/pages/2026-09/site-pages/{objectId} Mettez partiellement à jour une page de site web unique, spécifiée par son ID. Vous n'avez besoin de spécifier que les valeurs de colonne que vous modifiez. > **Supported products** > **Required Scopes** # API du CMS | Recherche de site Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/site-search/guide Ce point de terminaison est utilisé pour rechercher du contenu dans plusieurs domaines > **[Run in Postman](https://app.getpostman.com/run-collection/5e5c4c70292db4e72738)** > **Exigences de portée** # Recherche de site La recherche de site vous permet de renvoyer du contenu lié à un terme de recherche pour les sites hébergés par HubSpot. En outre, vous pouvez renvoyer toutes les données indexées pour un ID de document donné (ID de page, ID d'article ou encore ID de ligne HubDB). Si Google est utilisé pour effectuer des recherches sur l'ensemble du web, la recherche du site indexe un site entier et produit des résultats de recherche dans une liste facile à lire. Du e-commerce aux médias, cette fonctionnalité est courante et utile dans de nombreux types d'applications. **Exemple de cas d'utilisation :** Configurer une page de résultats pour utiliser un champ de recherche sur votre site hébergé par HubSpot. Consultez cet [article de la base de connaissances](https://knowledge.hubspot.com/fr/design-manager/set-up-a-results-page-to-use-a-search-field-on-your-site) pour plus d'informations. **Remarque** : le point de terminaison de recherche est utilisé pour rechercher du contenu dans plusieurs domaines. # Get indexed properties Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/site-search/get-indexed-data specs/2026-09/cms-site-search-v2026-09.json GET /cms/site-search/2026-09/indexed-data/{contentId} Retournez toutes les données indexées pour une ressource (ex. : page, article de blog, tableau HubDB), spécifiées par ID. Cela est utile pour déboguer pourquoi une ressource particulière n'est pas renvoyée par une recherche personnalisée. > **Supported products** > **Required Scopes** # Search your site Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/site-search/search-site specs/2026-09/cms-site-search-v2026-09.json GET /cms/site-search/2026-09/search Renvoie tout contenu de site web correspondant aux critères de recherche donnés pour un compte HubSpot. Les recherches peuvent être filtrées par type de contenu, domaine ou chemin d'URL. Inclut des options permettant de pondérer les résultats par caractère récent et popularité en plus de la prise en charge de la langue. > **Supported products** > **Required Scopes** # Create a file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/create-source-code-file specs/2026-09/cms-source-code-v2026-09.json POST /cms/source-code/2026-09/{environment}/content/{path} Crée un fichier à l'emplacement spécifié dans l'environnement spécifié. Accepte le type de contenu multipart/form-data. Lance une erreur si un fichier existe déjà à l'emplacement spécifié. > **Supported products** > **Required Scopes** # Delete a file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/delete-source-code-file specs/2026-09/cms-source-code-v2026-09.json DELETE /cms/source-code/2026-09/{environment}/content/{path} Supprime le fichier au chemin spécifié dans l'environnement spécifié. > **Supported products** > **Required Scopes** # Extract source code in a zip file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/extract/extract-source-code specs/2026-09/cms-source-code-v2026-09.json POST /cms/source-code/2026-09/extract/async Extrayez un fichier zip dans le système de fichiers du développeur. L'état de l'extraction peut être vérifié avec le point de terminaison d'API « /extract/async/tasks/taskId/status ». > **Supported products** > **Required Scopes** # Get extraction status Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/extract/get-extraction-status specs/2026-09/cms-source-code-v2026-09.json GET /cms/source-code/2026-09/extract/async/tasks/{taskId}/status Obtenez le statut d'une extraction par le « taskId » retourné par la requête initiale « extract/async ». > **Supported products** > **Required Scopes** # Retrieve file metadata Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/get-file-metadata specs/2026-09/cms-source-code-v2026-09.json GET /cms/source-code/2026-09/{environment}/metadata/{path} Obtient l'objet de métadonnées pour le fichier au chemin spécifié dans l'environnement spécifié. > **Supported products** > **Required Scopes** # Download a file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/get-source-code-file specs/2026-09/cms-source-code-v2026-09.json GET /cms/source-code/2026-09/{environment}/content/{path} Télécharge le contenu en octets du fichier au chemin spécifié dans l'environnement spécifié. > **Supported products** > **Required Scopes** # Conversations | Exécuter des blocs de code dans des bots Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/guide Découvrez des instructions pour l'exécution de vos propres blocs de code dans une action de bot. > **Exigences de portée** Lors de la [création ou de la modification d'un bot](https://knowledge.hubspot.com/fr/articles/kcs_article/conversations/create-a-bot), vous pouvez ajouter un bloc de code en cliquant sur le bouton + pour [ajouter une action,](https://knowledge.hubspot.com/fr/chatflows/a-guide-to-bot-actions) comme vous le feriez habituellement. Dans le panneau de sélection de l'action, cliquez sur Exécuter un bloc de code. ![run-a-code-snippet-2](https://developers.hubspot.com/hs-fs/hubfs/KB%20Team/run-a-code-snippet-2.png?width=322\&name=run-a-code-snippet-2.png) Ensuite, donnez un nom interne à votre action. Dans le panneau de modification de code, vous verrez le modèle par défaut pour Node.js 10.x. Les informations de l'objet d'événement et des formats de réponses possibles sont détaillées ci-dessous. ![run-a-code-snippet-editor](https://developers.hubspot.com/hs-fs/hubfs/KB%20Team/run-a-code-snippet-editor.png?width=388\&name=run-a-code-snippet-editor.png) Le code sera déclenché lorsque l'action enregistrée sera atteinte dans une conversation. Il existe trois éléments principaux à prendre en compte lors de l'utilisation de blocs de code : * La fonction `exports.main()` est appelée lorsque l'action de bloc de code est exécutée. * L'argument `event` est un objet contenant des informations pour le visiteur et la session de chat. * La fonction `callback()` est utilisée pour renvoyer des données au bot et à l'utilisateur. Elle doit être appelée dans la fonction `exports.main`. L'objet `event` contiendra les données suivantes : ```json theme={null} //example payload { "userMessage": { // Details for the last message sent to your bot "message": "100-500", // The last message received by your bot, sent by the visitor "quickReply": { // If the visitor selected any quick reply options, this will be a list of the selected options. // Will be 'null' if no options were selected. "quickReplies":[ // A list of quick reply options selected by the visitor { "value":"100-500", "label":"100-500" } ], }, "session": { "vid": 12345, // The contact VID of the visitor, if known. "properties": { // A list of properties collected by the bot in the current session. "CONTACT": { "firstname": { "value": "John", "syncedAt": 1534362540592 }, "email": { "value": "testing@domain.com", "syncedAt": 1534362541764 }, "lastname": { "value": "Smith", "syncedAt": 1534362540592 } } }, "customState":{myCustomCounter: 1, myCustomString:"someString"} // Only present if it customState was passed in from a previous callback payload } } ``` La fonction `callback()` est utilisée pour renvoyer des données au bot. L'argument doit être un objet avec les données suivantes : ```json theme={null} //sample payload { "botMessage": "Thanks for checking out our website!", // This is the message your bot will display to the visitor. "quickReplies": [{ value:'option', // Passed to the bot as the response on click label:'Option' // Gets displayed as the button label }], // the quickReplies object is optional "nextModuleNickname": "SuggestAwesomeProduct", // The nickname of the next module the bot should execute. If undefined, the bot will follow the default configured behavior "responseExpected": false // If true, the bot will display the returned botMessage, wait for a response, then execute this code snippet again with that new response. "customState":{myCustomCounter: 1, myCustomString:"someString"} // Optional field to pass along to the next step. } ``` ## Limites Les extraits de code dans les bots doivent se terminer dans un délai de 20 secondes et n'utiliser que 128 Mo de mémoire. Le dépassement de l'une de ces limites entraînera une erreur. ## Bibliothèques disponibles Plusieurs bibliothèques Node.js courantes peuvent être utilisées dans le bloc de code. * [async](https://www.npmjs.com/package/async) * [lodash](https://www.npmjs.com/package/lodash) * [mongoose](https://www.npmjs.com/package/mongoose) * [mysql](https://www.npmjs.com/package/mysql) * [redis](https://www.npmjs.com/package/redis) * [request](https://www.npmjs.com/package/request) * [aws-sdk](https://www.npmjs.com/package/aws-sdk) Les bibliothèques peuvent être chargées à l'aide de la fonction normale `require()` en haut de votre code. ```js theme={null} const request = require("request"); exports.main = (event, callback) => { request("http://time.jsontest.com/", function (error, response, body) { const responseJson = { botMessage: "The current time in GMT is " + JSON.parse(body).time, responseExpected: false, }; callback(responseJson); }); }; ``` # Create or update a file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/update-source-code-file specs/2026-09/cms-source-code-v2026-09.json PUT /cms/source-code/2026-09/{environment}/content/{path} Met à jour ou insère un fichier à l'emplacement spécifié dans l'environnement spécifié. Accepte le type de contenu multipart/form-data. > **Supported products** > **Required Scopes** # Validate the contents of a file Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/source-code/validate-source-code-file specs/2026-09/cms-source-code-v2026-09.json POST /cms/source-code/2026-09/{environment}/validate/{path} Valide le contenu du fichier passé au point de terminaison selon un chemin et un environnement spécifiés. Accepte le type de contenu multipart/form-data. > **Supported products** > **Required Scopes** # Create a mapping Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-mappings/create-url-mapping specs/2026-09/cms-url-mappings-v2026-09.json POST /url-mappings/2026-09/url-mappings Créez un nouveau mappage d'URL dans votre compte HubSpot. Ce point de terminaison vous permet de définir des redirections et des mappage d'URL, ce qui peut être utile pour gérer la navigation du site et le référencement. Le corps de la requête doit inclure toutes les propriétés requises du schéma UrlMapping. > **Supported products** > **Required Scopes** # Delete a mapping Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-mappings/delete-url-mapping specs/2026-09/cms-url-mappings-v2026-09.json DELETE /url-mappings/2026-09/url-mappings/{id} Supprimez un mappage d'URL spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Cette opération supprimera le mappage d'URL de manière permanente et nécessite les autorisations d'écriture et de suppression appropriées. > **Supported products** > **Required Scopes** # Retrieve a mapping Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-mappings/get-url-mapping specs/2026-09/cms-url-mappings-v2026-09.json GET /url-mappings/2026-09/url-mappings/{id} Récupérez un mappage d'URL spécifique à l'aide de son identifiant unique. Ce point de terminaison est utile pour obtenir des détails sur une configuration de mappage d'URL particulière au sein de votre compte HubSpot. Il nécessite l'ID du mappage d'URL comme paramètre de chemin. > **Supported products** > **Required Scopes** # Retrieve mappings Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-mappings/get-url-mappings specs/2026-09/cms-url-mappings-v2026-09.json GET /url-mappings/2026-09/url-mappings Récupérez une liste de mappages d'URL depuis le compte HubSpot. Ce point de terminaison donne accès aux configurations de mappage d'URL, qui peuvent être utilisées pour gérer et rediriger les URL au sein du CMS HubSpot. Il est utile pour comprendre comment les URL sont structurées et redirigées dans votre configuration de gestion de contenu. > **Supported products** > **Required Scopes** # Create a redirect Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/create-url-redirect specs/2026-09/cms-url-redirects-v2026-09.json POST /cms/url-redirects/2026-09 Créer une nouvelle redirection d'URL dans votre compte HubSpot. Ce point de terminaison vous permet de définir l'URL de destination, le style de redirection et le préfixe de routage pour la redirection. Il est utile pour gérer les redirections d'URL et s'assurer que les utilisateurs sont dirigés vers les bonnes pages. > **Supported products** > **Required Scopes** # Delete a redirect Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/delete-url-redirect specs/2026-09/cms-url-redirects-v2026-09.json DELETE /cms/url-redirects/2026-09/{urlRedirectId} Supprimer une redirection existante afin qu'elle ne soit plus mappée. > **Supported products** > **Required Scopes** # Retrieve redirect details Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/get-url-redirect specs/2026-09/cms-url-redirects-v2026-09.json GET /cms/url-redirects/2026-09/{urlRedirectId} Renvoie les détails d'une seule redirection d'URL existante par ID. > **Supported products** > **Required Scopes** # Retrieve current redirects Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/get-url-redirects specs/2026-09/cms-url-redirects-v2026-09.json GET /cms/url-redirects/2026-09 Récupérer une liste de redirections d'URL dans votre compte HubSpot. Ce point de terminaison vous permet de filtrer les redirections en fonction de leurs horodatages de création ou de mise à jour, et de trier les résultats. Il prend en charge la pagination et peut inclure les redirections archivées si spécifié. > **Supported products** > **Required Scopes** # URL redirects API Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/guide # Update a redirect Source: https://developers.hubspot.fr/docs/api-reference/latest/cms/url-redirects/update-url-redirect specs/2026-09/cms-url-redirects-v2026-09.json PATCH /cms/url-redirects/2026-09/{urlRedirectId} Met à jour les paramètres d'une redirection d'URL existante. > **Supported products** > **Required Scopes** # Retrieve all subscription status definitions Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/definitions/get-subscription-definitions specs/2026-09/communication-preferences-subscriptions-v2026-09.json GET /communication-preferences/2026-09/definitions Obtenez une liste de toutes les définitions de statut d'abonnement à partir du compte. > **Supported products** > **Required Scopes** # Communication preferences API guide Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/guide # Batch retrieve subscription statuses Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/status/batch/get-subscriptions specs/2026-09/communication-preferences-subscriptions-v2026-09.json POST /communication-preferences/2026-09/statuses/batch/read Récupérer par lots les statuts d'abonnement d'un ensemble de contacts. > **Supported products** > **Required Scopes** # Batch unsubscribe contacts from all subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/status/batch/unsubscribe-contacts-batch specs/2026-09/communication-preferences-subscriptions-v2026-09.json POST /communication-preferences/2026-09/statuses/batch/unsubscribe-all Désabonner un ensemble de contacts de tous les abonnements aux e-mails. > **Supported products** > **Required Scopes** # Get subscription preferences for a specific contact Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/status/get-subscription specs/2026-09/communication-preferences-subscriptions-v2026-09.json GET /communication-preferences/2026-09/statuses/{subscriberIdString} Récupérer les préférences d'un contact en matière d'abonnement aux e-mails. > **Supported products** > **Required Scopes** # Retrieve a contact's unsubscribed status Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/status/get-unsubscribed-status specs/2026-09/communication-preferences-subscriptions-v2026-09.json GET /communication-preferences/2026-09/statuses/{subscriberIdString}/unsubscribe-all Vérifie si un contact s'est désabonné de tous les abonnements aux e-mails. Si un contact ne s'est pas désabonné de toutes les communications, le tableau « résultats » de la réponse sera vide. > **Supported products** > **Required Scopes** # Update a contact's subscription status Source: https://developers.hubspot.fr/docs/api-reference/latest/communication-preferences/status/update-subscription specs/2026-09/communication-preferences-subscriptions-v2026-09.json POST /communication-preferences/2026-09/statuses/{subscriberIdString} Définir le statut d'abonnement d'un contact spécifique. > **Supported products** > **Required Scopes** # Conversations SDK Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/chat-configuration/chat-widget-sdk # Integrate the HubSpot mobile chat SDK into your Android app Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/chat-configuration/mobile-chat-sdk/android # Integrate the HubSpot mobile chat SDK into your iOS app Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/chat-configuration/mobile-chat-sdk/ios # Running code snippets in bots Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/chat-configuration/working-with-chatbots # Retrieve actor Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/actors/get-actor specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/actors/{actorId} Récupérer des informations sur un acteur spécifique du système de conversations en utilisant son identifiant unique. Ce point de terminaison est utile pour obtenir des détails sur un acteur particulier, qui peut être un agent, un bot ou toute autre entité impliquée dans les conversations. > **Supported products** > **Required Scopes** # Batch retrieve actors Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/actors/get-actors specs/2026-09/conversations-conversations-v2026-09.json POST /conversations/conversations/2026-09/actors/batch/read Récupérer des informations sur plusieurs acteurs dans une opération par lots. Ce point de terminaison est utile pour obtenir des détails sur divers acteurs en une seule requête, ce qui simplifie les processus de récupération de données. > **Supported products** > **Required Scopes** # Retrieve channel account Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/channel-accounts/get-channel-account specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/channel-accounts/{channelAccountId} Récupérer les détails d'un compte de canal spécifique dans votre compte HubSpot à l'aide de l'identifiant unique channelAccountId. Ce point de terminaison est utile pour accéder aux informations concernant un compte de canal particulier, y compris son statut archivé. > **Supported products** > **Required Scopes** # List channel accounts Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/channel-accounts/get-channel-accounts specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/channel-accounts Récupérer une liste de comptes de canaux associés à votre compte HubSpot. Ce point de terminaison vous permet de filtrer les résultats par ID de canal, ID de boîte de réception et d'autres critères. Il est utile pour gérer et examiner les comptes de canaux liés à vos conversations. > **Supported products** > **Required Scopes** # Retrieve channel Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/channels/get-channel specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/channels/{channelId} Récupérer les détails d'un canal spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Ce point de terminaison est utile pour accéder aux informations spécifiques à un canal, qui peuvent être utilisées pour gérer ou analyser les canaux de communication. > **Supported products** > **Required Scopes** # List Channels Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/channels/get-channels specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/channels Récupérer une liste de canaux dans votre compte HubSpot. Ce point de terminaison prend en charge la pagination et le tri, ce qui vous permet de gérer efficacement de grands ensembles de données. Utilisez ce point de terminaison pour obtenir un aperçu de tous les canaux disponibles. > **Supported products** > **Required Scopes** # Conversations API Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/guide # Retrieve inbox Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/inbox/get-inbox specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/inboxes/{inboxId} Récupérer les détails d'une boîte de réception spécifique de votre compte HubSpot à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux informations concernant la boîte de réception, y compris si elle est archivée. Il est utile pour gérer et organiser les conversations au sein des différentes boîtes de réception. > **Supported products** > **Required Scopes** # List inboxes Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/inbox/get-inboxes specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/inboxes Récupérer une liste de boîtes de réception dans votre compte HubSpot. Ce point de terminaison vous permet de paginer les résultats et de les trier selon vos besoins. Il peut également filtrer pour inclure uniquement les boîtes de réception archivées. > **Supported products** > **Required Scopes** # Create message Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/messages/create-message specs/2026-09/conversations-conversations-v2026-09.json POST /conversations/conversations/2026-09/threads/{threadId}/messages Créez un nouveau message au sein d'un fil de discussion spécifique dans votre compte HubSpot. Ce point de terminaison vous permet d'ajouter des messages à des fils de conversations existants, ce qui peut être utile pour poursuivre des discussions ou fournir des informations supplémentaires. Assurez-vous que le threadId est correctement spécifié pour cibler le fil de discussion approprié. > **Supported products** > **Required Scopes** # Retrieve message Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/messages/get-message specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/threads/{threadId}/messages/{messageId} Récupérer un message spécifique d'un fil de conversations dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux détails d'un message identifié par son messageId au sein d'un fil identifié par threadId. Vous pouvez spécifier certaines propriétés à inclure dans la réponse. > **Supported products** > **Required Scopes** # Retrieve message content Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/messages/get-message-content specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/threads/{threadId}/messages/{messageId}/original-content Récupérer le contenu original d'un message spécifique au sein d'un fil de discussion. Ce point de terminaison est utile pour accéder au texte non altéré ou au contenu de texte enrichi d'un message, ce qui peut être important pour l'audit ou l'examen de la communication initiale dans une conversation. > **Supported products** > **Required Scopes** # Retrieve messages Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/messages/get-messages specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/threads/{threadId}/messages Récupérer les messages d'un fil de conversations spécifique dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder à tous les messages associés à un fil donné, ce qui peut être utile pour examiner l'historique des conversations ou analyser les modèles de communication. > **Supported products** > **Required Scopes** # Delete Assignee Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/delete-assignee specs/2026-09/conversations-conversations-v2026-09.json DELETE /conversations/conversations/2026-09/threads/{threadId}/assignee Supprimer l'assigné d'un fil de conversations spécifique dans votre compte HubSpot. Cette opération est utile lorsque vous souhaitez désattribuer un fil de discussion à un utilisateur, le rendant ainsi disponible pour une réaffectation ou indiquant qu'il ne nécessite plus d'assigné spécifique. > **Supported products** > **Required Scopes** # Delete thread Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/delete-thread specs/2026-09/conversations-conversations-v2026-09.json DELETE /conversations/conversations/2026-09/threads/{threadId} Supprimer un fil de conversation spécifique dans votre compte HubSpot. Cette opération supprime du système le fil identifié par le threadId. Utiliser ce point de terminaison pour gérer et nettoyer les fils de conversations qui ne sont plus nécessaires. > **Supported products** > **Required Scopes** # Retrieve thread Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/get-thread specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/threads/{threadId} Récupérez les détails d'un fil de conversation spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux informations sur le fil de discussion, y compris ses propriétés et ses associations. Il est utile pour récupérer les détails du fil de discussion en vue d'un traitement ou d'un affichage ultérieur. > **Supported products** > **Required Scopes** # Retrieve threads Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/get-threads specs/2026-09/conversations-conversations-v2026-09.json GET /conversations/conversations/2026-09/threads Récupérez une liste de fils de conversations à partir des boîtes de réception spécifiées. Ce point de terminaison permet de filtrer par contact ou ticket associé, par statut de fil et par d'autres paramètres. Il prend en charge la pagination et le tri pour aider à gérer efficacement de grands ensembles de données. > **Supported products** > **Required Scopes** # Update assignee Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/update-assignee specs/2026-09/conversations-conversations-v2026-09.json PUT /conversations/conversations/2026-09/threads/{threadId}/assignee Attribuez un acteur spécifique à une conversation dans votre compte HubSpot. Ce point de terminaison vous permet de mettre à jour le responsable d'une conversation donnée, ce qui peut être utile pour gérer la répartition de la charge de travail entre les membres de l'équipe. > **Supported products** > **Required Scopes** # Update thread Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/conversations/threads/update-thread specs/2026-09/conversations-conversations-v2026-09.json PATCH /conversations/conversations/2026-09/threads/{threadId} Mettre à jour les détails d'un fil de discussion spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de modifier le statut ou d'autres attributs du fil de discussion identifié par l'ID du fil (threadId). Il est utile pour gérer l'état des fils de conversations, par exemple pour les marquer comme ouverts ou fermés. > **Supported products** > **Required Scopes** # Custom channels API guide Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/custom-channels/guide # Publish a message Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/custom-channels/messages/create-custom-channel specs/2026-09/conversations-custom-channels-v2026-09.json POST /conversations/custom-channels/2026-09/{channelId}/messages Publiez un message sur votre canal personnalisé > **Supported products** > **Required Scopes** # Get a message Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/custom-channels/messages/get-custom-channel specs/2026-09/conversations-custom-channels-v2026-09.json GET /conversations/custom-channels/2026-09/{channelId}/messages/{messageId} Obtenir les détails d'un message spécifique envoyé sur un canal personnalisé > **Supported products** > **Required Scopes** # Update a message Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/custom-channels/messages/update-custom-channel specs/2026-09/conversations-custom-channels-v2026-09.json PATCH /conversations/custom-channels/2026-09/{channelId}/messages/{messageId} Mettre à jour le statut d'un message pour indiquer s'il a été envoyé avec succès, s'il a échoué ou s'il a été lu. Pour les messages ayant échoué, cela peut également inclure le message d'erreur correspondant à l'échec. > **Supported products** > **Required Scopes** # Conversations Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/guide # Generate visitor token Source: https://developers.hubspot.fr/docs/api-reference/latest/conversations/visitor-identification/create-visitor-identification specs/2026-09/conversations-visitor-identification-v2026-09.json POST /visitor-identification/2026-09/tokens/create Générez un jeton d'identification pour un visiteur du site Web qui a été authentifié à l'aide de votre propre système. Un jeton d'identification renvoyé par cette API peut être utilisé pour transmettre des informations sur votre visiteur déjà authentifié au widget de chat, afin qu'il traite le visiteur comme un contact connu. Cela permet aux agents du support de reconnaître et d'aider le visiteur plus efficacement. > **Supported products** > **Required Scopes** # Create calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/batch/create-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/batch/create Créez un lot d'appel. Le tableau `entrées` peut contenir un objet `propriétés` pour définir des valeurs de propriété pour chaque fiche d'informations, avec un tableau `associations` pour définir les [associations](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4) avec d'autres fiches d'informations du CRM. > **Supported products** > **Required Scopes** # Archive calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/batch/delete-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/batch/archive Archiver un lot d'appels via son ID. Les appels supprimés peuvent être restaurés dans les 90 jours suivant leur suppression, mais les fiches d'informations d'appels seront définitivement supprimées. En savoir plus sur la [restauration des fiches d'informations d'activité] (https://knowledge.hubspot.com/records/restore-deleted-activity-in-a-record). > **Supported products** > **Required Scopes** # Retrieve calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/batch/get-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/batch/read Récupérer un lot d'appels par ID. > **Supported products** > **Required Scopes** # Update calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/batch/update-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/batch/update Mettre à jour un lot d'appels par ID. > **Supported products** > **Required Scopes** # Upsert calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/batch/upsert-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create a call Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/create-call specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls Créez un appel avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création d'appel standard sont fournis. > **Supported products** > **Required Scopes** # Archive a call Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/delete-call specs/2026-09/crm-calls-v2026-09.json DELETE /crm/objects/2026-09/calls/{callId} Déplacer un objet identifié par « {callId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve a call Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/get-call specs/2026-09/crm-calls-v2026-09.json GET /crm/objects/2026-09/calls/{callId} Lire un objet identifié par « {callId} ». « {callId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/get-calls specs/2026-09/crm-calls-v2026-09.json GET /crm/objects/2026-09/calls Lire une page d'appels. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Engagements | Appels Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/guide Utilisez l'API d'engagement des appels pour enregistrer et gérer les appels dans les fiches d'informations CRM. > **[Run in Postman](https://app.getpostman.com/run-collection/dd75d149eaa15806754f)** > **Exigences de portée** Utilisez l'API d'engagement des appels pour documenter et gérer les appels sur les fiches d'informations CRM et sur la [page index des appels](https://knowledge.hubspot.com/fr/records/view-and-filter-records). Vous pouvez enregistrer des appels soit [dans HubSpot](https://knowledge.hubspot.com/fr/records/manually-log-activities-on-records) soit via l'API d'appels. Ci-dessous, découvrez les méthodes de base pour gérer les appels via l'API. Pour connaître tous les points de terminaison disponibles et leurs exigences, consultez la [documentation de référence](/docs/api-reference/crm-calls-v3/guide). ## Créer un engagement d'appel Pour créer un engagement d'appel, effectuez une requête `POST` à `/crm/v3/objects/calls`. Dans le corps de la requête, ajoutez les détails d'appel dans un objet **properties**. Vous pouvez également ajouter un objet d'**association** pour associer votre nouvel appel à une fiche d'informations existante (par exemple, des contacts ou des entreprises). ### Propriétés Vous trouverez ci-dessous une liste des propriétés d'appel par défaut de HubSpot que vous pouvez inclure dans l'objet de propriétés. Vous pouvez également créer des propriétés personnalisées à l'aide de l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). | Champ | Description | | - | - | | `hs_timestamp` | Obligatoire. Ce champ indique l'heure de création de l'appel et détermine où se trouve l'appel sur la chronologie de la fiche d'informations. Vous pouvez utiliser soit un horodatage Unix en millisecondes, soit un format UTC. | | `hs_call_body` | La description de l'appel, y compris les notes que vous souhaitez ajouter. | | `hs_call_callee_object_id` | L'ID de la fiche d'informations HubSpot associée à l'appel. Il s'agit du destinataire de l'appel pour les appels `OUTBOUND`, ou de la personne ayant composé le numéro pour les appels `INBOUND`. | | `hs_call_callee_object_type` | L'ID de l'objet auquel la fiche d'informations associée à l'appel appartient (par exemple, spécifie si la fiche d'informations est un contact ou une entreprise). Il s'agit de l'objet du destinataire pour les appels `OUTBOUND`, ou de l'objet de la personne ayant composé le numéro pour les appels `INBOUND`. | | `hs_call_direction` | La direction de l'appel du point de vue de l'utilisateur HubSpot. Si l'utilisateur est le destinataire de l'appel, la direction doit être définie sur `INBOUND`. Si l'utilisateur a lancé l'appel, la direction doit être définie sur `OUTBOUND`. | | `hs_call_disposition` | Le résultat de l'appel. Pour définir la disposition des appels, vous devez utiliser la valeur interne du GUID. Si votre compte a configuré des [résultats d'appel personnalisés](https://knowledge.hubspot.com/fr/calling/create-custom-call-and-meeting-outcomes), vous pouvez trouver leurs GUID de disposition à l'aide de [cette API](/docs/api-reference/crm-communications-v3/guide#get-call-engagement-dispositions). Par défaut, les libellés de résultat HubSpot et leurs valeurs internes sont :
          • Occupé(e) : `9d9162e7-6cf3-4944-bf63-4dff82258764`
          • Connecté(e) : `f240bbac-87c9-4f6e-bf70-924b57d47db7`
          • A laissé un message en direct : `a4c4c377-d246-4b32-a13b-75a56a4cd0ff`
          • A laissé un message vocal : `b2cf5968-551e-4856-9783-52b3da59a7d0`
          • Pas de réponse : `73a0d17f-1163-4015-bdd5-ec830791da20`
          • Mauvais numéro : `17b47fee-58de-441e-a44c-c6300d46f273`
          | | `hs_call_duration` | La durée de l'appel en millisecondes. | | `hs_call_from_number` | Le numéro de téléphone à partir duquel l'appel a été effectué. | | `hs_call_recording_url` | L'URL qui stocke la fiche d'informations de l'appel. Les URL des fichiers .mp3 ou .wav peuvent être lues sur des fiches d'information CRM. Seules les URL HTTPS sécurisées seront acceptées. | | `hs_call_status` | Le statut de l'appel. Les statuts sont `BUSY`, `CALLING_CRM_USER`, `CANCELED`, `COMPLETED`, `CONNECTING`, `FAILED`, `IN_PROGRESS`, `NO_ANSWER`, `QUEUED` et `RINGING`. | | `hs_call_title` | Le titre de l'appel. | | `hs_call_source` | La source de l'appel. Cette information n'est pas obligatoire, sauf pour exploiter le [pipeline des enregistrements et des transcriptions](/docs/apps/legacy-apps/extensions/calling-extensions/recordings-and-transcriptions#log-a-call-with-your-app-s-endpoint-using-the-engagements-api). Si la propriété est définie, elle doit être définie sur `INTEGRATIONS_PLATFORM`. | | `hs_call_to_number` | Le numéro de téléphone qui a reçu l'appel. | | `hubspot_owner_id` | L'[ID du propriétaire](/docs/api-reference/crm-crm-owners-v3/guide) associé à l'appel. Ce champ détermine l'utilisateur listé comme le créateur d'appel sur la chronologie de la fiche d'informations. | | `hs_activity_type` | Le type d'appel. Les options sont basées sur les [types d'appels définis dans votre compte HubSpot.](https://knowledge.hubspot.com/fr/meetings-tool/how-do-i-create-and-use-call-and-meeting-types) | | `hs_attachment_ids` | Les ID des pièces jointes de l'appel. Les ID de pièces jointes multiples sont séparés par un point-virgule. | ### Associations Pour créer et associer un appel à des fiches d'informations existantes, incluez un objet d'association dans votre requête. Par exemple, pour créer un appel et l'associer à un contact et à un ticket, votre corps de requête peut ressembler à ce qui suit : ```json theme={null} // Example request body { "properties": { "hs_timestamp": "2021-03-17T01:32:44.872Z", "hs_call_title": "Support call", "hubspot_owner_id": "11349275740", "hs_call_body": "Resolved issue", "hs_call_duration": "3800", "hs_call_from_number": "(857) 829 5489", "hs_call_to_number": "(509) 999 9999", "hs_call_recording_url": "https://api.twilio.com/2010-04-01/Accounts/AC890b8e6fbe0d989bb9158e26046a8dde/Recordings/RE3079ac919116b2d22", "hs_call_status": "COMPLETED" }, "associations": [ { "to": { "id": 500 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 194 } ] }, { "to": { "id": 1234 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 220 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Champ | Description | | - | - | | `to` | La fiche d'informations à laquelle vous souhaitez associer l'appel, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre l'appel et la fiche d'informations. Inclut `associationCategory` et `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | Pour en savoir plus sur la création d'appels par lots, consultez la [documentation de référence](/docs/api-reference/crm-calls-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fcalls%2Fbatch%2Fcreate). ## Récupérer des appels Vous pouvez récupérer des appels individuellement ou en lot. Pour en savoir plus sur la récupération des lots, consultez la [documentation de référence](/docs/api-reference/crm-calls-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fcalls%2Fbatch%2Fread). Pour récupérer un appel individuel par son ID d'appel, effectuez une requête `GET` à `/crm/v3/objects/calls/{callId}`. Vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules [des propriétés](#call-properties-1) à renvoyer. | | `associations` | Une liste séparée par des virgules des types d'objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | Pour demander une liste de tous les appels, effectuez une requête `GET` à `/crm/v3/objects/calls`. Vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `limit` | Le nombre maximum de résultats à afficher par page. | | `properties` | Une liste séparée par des virgules [des propriétés](#call-properties-1) à renvoyer. | Lorsque vous effectuez une requête réussie, la réponse inclut le `callId` que vous pouvez utiliser pour récupérer, mettre à jour et supprimer l'appel. ## Identifier les messages vocaux par rapport aux appels enregistrés Pour les appels enregistrés et les messages vocaux, un enregistrement est stocké dans la propriété `hs_call_recording_url`. Si votre compte a accès aux [appels entrants](https://knowledge.hubspot.com/fr/calling/receive-calls-in-hubspot), pour différencier appels terminés et enregistrés des appels entrants avec messages vocaux, incluez les propriétés suivantes dans votre requête : `hs_call_status` et `hs_call_has_voicemail`. Si un appel a un message vocal, la valeur `hs_call_status` sera `missed` et la valeur `hs_call_has_voicemail` sera `true`. La valeur `hs_call_has_voicemail` sera `false` pour un appel entrant où aucun message vocal n'a été laissé, ou `null` si l'appel a un statut autre que Manqué. ## Mettre à jour les appels Vous pouvez mettre à jour les appels individuellement ou par lots. Pour mettre à jour un appel individuel par son ID d'appel, effectuez une requête `PATCH` à `/crm/v3/objects/calls/{callId}`. Dans le corps de la requête, incluez les propriétés d'appel que vous souhaitez mettre à jour : ```json theme={null} //Example PATCH request to https://api.hubspot.com/crm/v3/objects/calls/{callID} { "properties": { "hs_timestamp": "2021-03-17T01:32:44.872Z", "hs_call_title": "Discovery call", "hubspot_owner_id": "11349275740", "hs_call_body": " Decision maker out, will call back tomorrow", "hs_call_duration": "3800", "hs_call_from_number": "(857) 829 5489", "hs_call_to_number": "(509) 999 9999", "hs_call_recording_url": "https://api.twilio.com/2010-04-01/Accounts/AC890b8e6fbe0d989bb9158e26046a8dde/Recordings/RE3079ac919116b2d22", "hs_call_status": "COMPLETED" } }' ``` HubSpot ignorera les valeurs des propriétés inexistantes ou en lecture seule. Pour effacer une valeur de propriété, passez une chaîne vide comme valeur de propriété dans le corps de la requête. Pour en savoir plus sur la mise à jour par lots, consultez la [documentation de référence](/docs/api-reference/crm-calls-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fcalls%2Fbatch%2Fupdate). ### Associer des appels existants à des fiches d'informations Pour associer un appel à des fiches d'informations, comme un contact et ses entreprises associées, effectuez une requête `PUT` à `/crm/v3/objects/calls/{callId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. L'URL de la requête contient les champs suivants : | Champ | Description | | - | - | | `callId` | L'ID de l'appel. | | `toObjectType` | Le type d'objet auquel vous souhaitez associer l'appel (par exemple, contact ou entreprise) | | `toObjectId` | L'ID de la fiche d'informations avec laquelle vous souhaitez associer l'appel. | | `associationTypeId` | Un identifiant unique pour indiquer le type d'association entre l'appel et l'autre objet. L'ID peut être représenté numériquement ou en snake case (ex : `call_to_contact`). Vous pouvez récupérer la valeur via l'[API des associations](/docs/api-reference/crm-associations-v3/guide). | Par exemple, l'URL de votre requête peut ressembler à ce qui suit : `https://api.hubspot.com/crm/v3/objects/calls/17591596434/associations/contact/104901/194` ### Supprimer une association Pour supprimer une association entre un appel et une fiche d'informations, faites une requête `DELETE` à la même URL que ci-dessus : `/crm/v3/objects/calls/{callId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}` ## Épingler un appel sur une fiche d'informations Vous pouvez [épingler un appel](https://knowledge.hubspot.com/fr/records/pin-an-activity-on-a-record) sur une fiche d'informations afin qu'il reste en haut de la chronologie de la fiche d'informations. L'appel doit déjà être associé à la fiche d'informations avant d'être épinglé, et vous ne pouvez épingler qu'une seule activité par fiches d'informations. Pour épingler un appel, incluez l'`id` de l'appel dans le champ `hs_pinned_engagement_id` lors de la création ou de la mise à jour d'une fiche d'informations via les API objet. Découvrez-en davantage sur l'utilisation des API d'[entreprises](/docs/api-reference/crm-companies-v3/guide#pin-an-activity-on-a-company-record)[, de contacts](/docs/api-reference/crm-contacts-v3/guide#pin-an-activity-on-a-contact-record), de [transactions](/docs/api-reference/crm-deals-v3/guide#pin-an-activity-on-a-deal-record), de [tickets](/docs/api-reference/crm-tickets-v3/guide#pin-an-activity-on-a-ticket-record) et d'[objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide). ## Supprimer des appels Vous pouvez supprimer les appels individuellement ou par lots, ce qui placera l'appel à la corbeille dans HubSpot. Vous pouvez ensuite [restaurer l'appel à partir de la chronologie des fiches d'informations](https://knowledge.hubspot.com/fr/records/restore-deleted-activity-in-a-record). Pour supprimer un appel individuel par son ID d'appel, effectuez une requête `DELETE` à `/crm/v3/objects/calls/{callId}`. Pour en savoir plus sur la suppression des appels, consultez la [documentation de référence](/docs/api-reference/crm-calls-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Fcalls%2F%7Bcallid%7D). # Search for calls Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/search/search-calls specs/2026-09/crm-calls-v2026-09.json POST /crm/objects/2026-09/calls/search Rechercher des appels en filtrant les propriétés, en parcourant les associations et en triant les résultats. En savoir plus sur la [recherche CRM](https://developers.hubspot.com/docs/guides/api/crm/search#make-a-search-request). > **Supported products** > **Required Scopes** # Update a call Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/calls/update-call specs/2026-09/crm-calls-v2026-09.json PATCH /crm/objects/2026-09/calls/{callId} Effectue une mise à jour partielle d'un objet identifié par « {callId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {callId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/batch/create-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/batch/create Créer un lot d'objets CRM avec des propriétés spécifiées. Ce point de terminaison vous permet de créer efficacement plusieurs objets en une seule requête, ce qui peut être utile pour les imports de données en masse ou la synchronisation de données provenant d'autres systèmes. La réponse inclut une copie de chaque objet créé, y compris leurs identifiants. > **Supported products** > **Required Scopes** # Delete emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/batch/delete-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/batch/archive Archiver un lot d'objets CRM par leurs ID. Ce point de terminaison est utile pour gérer de grands ensembles d'objets qui doivent être archivés simultanément, ce qui simplifie le processus de déplacement de plusieurs objets vers l'archive. > **Supported products** > **Required Scopes** # Retrieve emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/batch/get-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Il prend en charge le filtrage des objets archivés si nécessaire. > **Supported products** > **Required Scopes** # Update emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/batch/update-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/batch/update Mettre à jour un lot d'objets CRM dans HubSpot à l'aide de leurs identifiants uniques. Ce point de terminaison vous permet de modifier plusieurs objets en une seule requête, ce qui le rend efficace pour les mises à jour en masse. Assurez-vous que le corps de la requête contient les propriétés nécessaires pour chaque objet que vous souhaitez mettre à jour. > **Supported products** > **Required Scopes** # Upsert emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/batch/upsert-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/batch/upsert Créez ou mettez à jour un lot d'objets CRM dans HubSpot en utilisant des valeurs de propriété uniques. Ce point de terminaison permet une gestion efficace de plusieurs objets en créant de nouvelles entrées ou en mettant à jour celles qui existent, en fonction des identifiants uniques fournis. > **Supported products** > **Required Scopes** # Create an email Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/create-email specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM avec des attributs prédéfinis. La documentation et des exemples pour la création d'objets standard sont fournis pour faciliter le processus. > **Supported products** > **Required Scopes** # Delete an email Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/delete-email specs/2026-09/crm-emails-v2026-09.json DELETE /crm/objects/2026-09/emails/{emailId} Déplacer un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son identifiant unique, le retirant ainsi de l'utilisation active tout en le conservant dans le système pour une éventuelle récupération ou référence. > **Supported products** > **Required Scopes** # Retrieve an email Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/get-email specs/2026-09/crm-emails-v2026-09.json GET /crm/objects/2026-09/emails/{emailId} Lire un objet identifié par `{objectId}`. Par défaut, `{objectId}` fait référence à l'ID d'objet interne, mais il peut également s'agir de toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Vous pouvez contrôler les données renvoyées en spécifiant le paramètre de requête `properties`. > **Supported products** > **Required Scopes** # Retrieve emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/get-emails specs/2026-09/crm-emails-v2026-09.json GET /crm/objects/2026-09/emails Lire une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison est utile pour récupérer une liste d'objets CRM avec des détails et des associations spécifiques. > **Supported products** > **Required Scopes** # Engagements | E-mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/guide Utilisez l'API d'engagement des e-mails pour enregistrer et gérer les e-mails dans les fiches d'informations du CRM. > **[Run in Postman](https://app.getpostman.com/run-collection/dd75d149eaa15806754f)** > **Exigences de portée** Utilisez l'API d'engagement des e-mails pour enregistrer et gérer les e-mails dans les fiches d'informations du CRM. Vous pouvez enregistrer des activités d'e-mails soit [dans HubSpot](https://knowledge.hubspot.com/fr/records/manually-log-activities-on-records) soit via l'API des e-mails. Découvrez ci-dessous les méthodes de base pour gérer les e-mails via l'API. Pour connaître tous les points de terminaison disponibles et leurs exigences, consultez la [documentation de référence](/docs/api-reference/crm-emails-v3/guide). ## Créer un e-mail Pour créer un engagement d'e-mail, effectuez une requête `POST` à `/crm/v3/objects/emails`. Dans le corps de la requête, ajoutez les détails d'e-mails dans un objet **properties**. Vous pouvez également ajouter un objet d'**association** pour associer votre nouvel e-mail à une fiche d'informations existante (par exemple, des contacts ou des entreprises). ### Propriétés Dans l'objet de propriété, vous pouvez inclure les champs suivants : | Champ | Description | | - | - | | `hs_timestamp` | Obligatoire. Ce champ indique l'heure de création de l'e-mail et détermine où se trouve l'e-mail sur la chronologie de la fiche d'informations. Vous pouvez utiliser soit un horodatage Unix en millisecondes, soit un format UTC. | | `hubspot_owner_id` | L'[ID du propriétaire](/docs/api-reference/crm-crm-owners-v3/guide) associé à l'e-mail. Ce champ détermine l'utilisateur listé comme le créateur de l'e-mail sur la chronologie de la fiche d'informations. | | `hs_email_direction` | La direction dans laquelle l'e-mail a été envoyé. Les valeurs possibles sont : `EMAIL` : l'e-mail a été envoyé depuis le CRM ou envoyé et enregistré dans le CRM avec [l'adresse CCI.](https://knowledge.hubspot.com/fr/connected-email/log-email-in-your-crm-with-the-bcc-or-forwarding-address)`INCOMING_EMAIL` : l'e-mail était une réponse à un e-mail sortant enregistré. `FORWARDED_EMAIL` : l'e-mail a été [transféré au CRM.](https://knowledge.hubspot.com/fr/connected-email/log-email-in-your-crm-with-the-bcc-or-forwarding-address) | | `hs_email_html` | Le corps d'un e-mail s'il est envoyé depuis un enregistrement CRM. | | `hs_email_status` | Le statut d'envoi de l'e-mail. La valeur peut être `BOUNCED`, `FAILED`, `SCHEDULED`, `SENDING`, ou `SENT`. | | `hs_email_subject` | La ligne d'objet de l'e-mail enregistré. | | `hs_email_text` | Le corps de l'e-mail. | | `hs_attachment_ids` | Les ID des pièces jointes de l'e-mail. Les ID de pièces jointes multiples sont séparés par un point-virgule. | | `hs_email_headers` | Les en-têtes de l'e-mail. La valeur de cette propriété renseignera automatiquement certaines propriétés d'e-mails en lecture seule. Découvrez comment [configurer des en-têtes d'e-mails.](/docs/api-reference/crm-emails-v3/guide#set-email-headers) | Pour en savoir plus sur la création par lots d'engagements par e-mails, consultez la [documentation de référence](/docs/api-reference/crm-emails-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Femails%2Fbatch%2Fcreate). ### Propriétés en lecture seule Certaines propriétés d'e-mail sont également en lecture seule et sont automatiquement renseignées par HubSpot. Les propriétés du tableau ci-dessous sont toutes automatiquement renseignées à partir de la valeur `hs_email_headers`. | Champ | Description | | - | - | | `hs_email_from_email` | L'adresse e-mail de l'expéditeur de l'e-mail. | | `hs_email_from_firstname` | Le prénom de l'expéditeur de l'e-mail. | | `hs_email_from_lastname` | Le nom de famille de l'expéditeur de l'e-mail. | | `hs_email_to_email` | Les adresses e-mail des destinataires de l'e-mail. | | `hs_email_to_firstname` | Les prénoms des destinataires de l'e-mail. | | `hs_email_to_lastname` | Les noms de famille des destinataires de l'e-mail. | > [!WARNING] > > **Remarque :** lors de la récupération d'un en-tête d'e-mail, vous pouvez remarquer que des valeurs existent pour `From` et `Sender`. Ce sont souvent les mêmes, mais comme `Sender` identifie l'élément qui a soumis un e-mail, il existe des scénarios où les valeurs peuvent être différentes. Par exemple, si un e-mail est envoyé à partir d'un alias d'e-mail, la valeur `From` fera référence à l'adresse e-mail réelle de l'utilisateur et la valeur `Sender` fera référence à l'alias d'e-mail. ### Définir des en-têtes d'e-mail Étant donné que les en-têtes remplissent automatiquement les propriétés en lecture seule, il peut être préférable de définir les en-têtes d'e-mail manuellement. Pour définir la valeur `hs_email_headers`, vous pouvez utiliser une chaîne d'échappement JSON avec les données suivantes : ```json theme={null} //Example data { "from": { "email": "from@domain.com", "firstName": "FromFirst", "lastName": "FromLast" }, "to": [ { "email": "ToFirst ToLast", "firstName": "ToFirst", "lastName": "ToLast" } ], "cc": [], "bcc": [] } ``` Par exemple, votre requête de création d'un e-mail peut ressembler à ceci : ```json theme={null} //Example request body { "properties": { "hs_timestamp": "2019-10-30T03:30:17.883Z", "hubspot_owner_id": "47550177", "hs_email_direction": "EMAIL", "hs_email_status": "SENT", "hs_email_subject": "Let's talk", "hs_email_text": "Thanks for youremail", "hs_email_headers": "{\"from\":{\"email\":\"from@domain.com\",\"firstName\":\"FromFirst\",\"lastName\":\"FromLast\"},\"sender\":{\"email\":\"sender@domain.com\",\"firstName\":\"SenderFirst\",\"lastName\":\"SenderLast\"},\"to\":[{\"email\":\"ToFirst+ToLast\",\"firstName\":\"ToFirst\",\"lastName\":\"ToLast\"}],\"cc\":[],\"bcc\":[]}" } } ``` ### Associations Pour créer et associer un e-mail à des fiches d'informations existantes, incluez un objet d'association dans votre requête. Par exemple, pour créer un e-mail et l'associer à une transaction et à un contact, votre corps de requête peut ressembler à ce qui suit : ```json theme={null} // Example request body { "properties": { "hs_timestamp": "2019-10-30T03:30:17.883Z", "hubspot_owner_id": "11349275740", "hs_email_direction": "EMAIL", "hs_email_status": "SENT", "hs_email_subject": "Let's talk", "hs_email_text": "Thanks for your interest let's find a time to connect" }, "associations": [ { "to": { "id": 601 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 210 } ] }, { "to": { "id": 602 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 198 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Champ | Description | | - | - | | `to` | La fiche d'informations à laquelle vous souhaitez associer l'e-mail, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre l'e-mail et la fiche d'informations. Inclut la `associationCategory` et le `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | ## Récupérer des e-mails Vous pouvez récupérer des e-mails individuellement ou en lot. Pour en savoir plus sur la récupération des lots, consultez la [documentation de référence](/docs/api-reference/crm-emails-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Femails%2Fbatch%2Fread). Pour récupérer un e-mail individuel par son ID d'e-mail, effectuez une requête `GET` à `/crm/v3/objects/emails/{emailId}`. Vous pouvez aussi inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer. | | `associations` | Une liste séparée par des virgules des types d'objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | Pour demander une liste de tous les e-mails, effectuez une requête `GET` à `crm/v3/objects/emails`. Vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `limit` | Le nombre maximum de résultats à afficher par page. | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer. | ## Mettre à jour les e-mails Vous pouvez mettre à jour des e-mails individuellement ou par lots. Pour mettre à jour un e-mail individuel avec son ID d'e-mail, effectuez une requête `PATCH` à `/crm/v3/objects/emails/{emailId}`. Dans le corps de la requête, incluez les propriétés d'e-mail que vous souhaitez mettre à jour. Par exemple, votre corps de requête peut ressembler aux éléments suivants : ```json theme={null} // Example request body { "properties": { "hs_timestamp": "2019-10-30T03:30:17.883Z", "hubspot_owner_id": "11349275740", "hs_email_direction": "EMAIL", "hs_email_status": "SENT", "hs_email_subject": "Let's talk tomorrow", "hs_email_text": "Thanks for your interest let's find a time to connect!" } } ``` HubSpot ignorera les valeurs des propriétés inexistantes ou en lecture seule. Pour effacer une valeur de propriété, passez une chaîne vide comme valeur de propriété dans le corps de la requête. Pour en savoir plus sur la mise à jour par lots, consultez la [documentation de référence](/docs/api-reference/crm-emails-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Femails%2Fbatch%2Fupdate). ### Associer des e-mails existants à des fiches d'informations Pour associer un e-mail à des fiches d'informations, comme un contact et ses entreprises associées, effectuez une requête `PUT` à `/crm/v3/objects/emails/{emailId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. L'URL de la requête contient les champs suivants : | Champ | Description | | - | - | | `emailId` | L'ID de l'e-mail. | | `toObjectType` | Le type d'objet auquel vous souhaitez associer l'e-mail (par exemple, contact ou entreprise) | | `toObjectId` | L'ID de la fiche d'informations avec laquelle vous souhaitez associer l'e-mail. | | `associationTypeId` | Un identifiant unique pour indiquer le type d'association entre l'e-mail et l'autre objet. L'ID peut être représenté numériquement ou en snake case (ex : `email_to_contact`). Vous pouvez récupérer la valeur via l'[API des associations](/docs/api-reference/crm-associations-v3/guide). | Par exemple, l'URL de votre requête peut ressembler à ce qui suit : `https://api.hubspot.com/crm/v3/objects/emails/17691787884/associations/contact/104901/198` ### Supprimer une association Pour supprimer une association entre un e-mail et une fiche d'informations, faites une requête `DELETE` à la même URL que ci-dessus : `/crm/v3/objects/emails/{emailId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}` ## Épingler un e-mail sur une fiche d'informations Vous pouvez [épingler un e-mail](https://knowledge.hubspot.com/fr/records/pin-an-activity-on-a-record) sur une fiche d'informations afin qu'il reste en haut de la chronologie de la fiche d'informations. L'e-mail doit déjà être associé à la fiche d'informations avant d'être épinglé, et vous ne pouvez épingler qu'une seule activité par fiches d'informations. Pour épingler un e-mail, incluez l'`id` de l'e-mail dans le champ `hs_pinned_engagement_id` lors de la création ou de la mise à jour d'une fiche d'informations via les API objet. Découvrez-en davantage sur l'utilisation des API d'[entreprises](/docs/api-reference/crm-companies-v3/guide#pin-an-activity-on-a-company-record)[, de contacts](/docs/api-reference/crm-contacts-v3/guide#pin-an-activity-on-a-contact-record), de [transactions](/docs/api-reference/crm-deals-v3/guide#pin-an-activity-on-a-deal-record), de [tickets](/docs/api-reference/crm-tickets-v3/guide#pin-an-activity-on-a-ticket-record) et d'[objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide). ## Supprimer des e-mails Lorsque vous supprimez un e-mail, il est définitivement supprimé et ne peut pas être restauré. Vous pouvez supprimer des e-mails individuellement ou par lots. Pour mettre à jour un e-mail individuel avec son ID d'e-mail, effectuez une requête `DELETE` à `/crm/v3/objects/emails/{emailId}`. Pour en savoir plus sur la suppression des e-mails, consultez la [documentation de référence](/docs/api-reference/crm-emails-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Femails%2F%7Bemailid%7D). # Search for emails Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/search/search-emails specs/2026-09/crm-emails-v2026-09.json POST /crm/objects/2026-09/emails/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des recherches complexes en spécifiant des groupes de filtres, des options de tri et des propriétés à inclure dans la réponse. Il est utile pour récupérer des objets spécifiques basés sur des paramètres de recherche détaillés. > **Supported products** > **Required Scopes** # Update an email Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/emails/update-email specs/2026-09/crm-emails-v2026-09.json PATCH /crm/objects/2026-09/emails/{emailId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/batch/create-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/batch/create Créer un lot de réunions. Le tableau « entrée » peut contenir un objet « propriétés » pour définir des valeurs de propriété de la fiche d'informations, ainsi qu'un tableau « associations » pour définir les relations avec d'autres fiches d'informations d'objets. > **Supported products** > **Required Scopes** # Delete meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/batch/delete-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/batch/archive Supprimer un lot de réunions par ID. > **Supported products** > **Required Scopes** # Retrieve meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/batch/get-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/batch/update-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/batch/update Mettez à jour un lot de réunions via leur ID (`objectId`) ou par valeur de propriété unique (`idProperty`). Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Upsert meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/batch/upsert-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/create-meeting specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings Créez une réunion avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de réunions standard sont fournis. > **Supported products** > **Required Scopes** # Delete meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/delete-meeting specs/2026-09/crm-meetings-v2026-09.json DELETE /crm/objects/2026-09/meetings/{meetingId} Déplacer un objet identifié par « {meetingId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/get-meeting specs/2026-09/crm-meetings-v2026-09.json GET /crm/objects/2026-09/meetings/{meetingId} Lire un objet identifié par « {meetingId} ». « {meetingId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/get-meetings specs/2026-09/crm-meetings-v2026-09.json GET /crm/objects/2026-09/meetings Lire une page de réunions. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Engagements | Réunions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/guide Utilisez l'API d'engagement des réunions pour enregistrer et gérer les réunions dans les fiches d'informations CRM. > **[Run in Postman](https://app.getpostman.com/run-collection/dd75d149eaa15806754f)** > **Exigences de portée** Utilisez l'API d'engagement des réunions pour enregistrer et gérer les réunions dans les fiches d'informations CRM. Vous pouvez enregistrer des activités de réunions soit [dans HubSpot](https://knowledge.hubspot.com/fr/records/manually-log-activities-on-records) soit via l'API des réunions. Vous pouvez récupérer, mettre à jour ou supprimer les engagements de réunion enregistrés manuellement sur une fiche d'informations, planifiés à l'aide de l'[outil réunions](https://knowledge.hubspot.com/fr/meetings-tool/use-meetings) ou planifiés à l'aide de [Google Agenda ou de l'intégration du calendrier Office 365](https://knowledge.hubspot.com/fr/meetings-tool/schedule-a-meeting-on-a-record). Découvrez ci-dessous les méthodes de base pour gérer les réunions via l'API. Pour connaître tous les points de terminaison disponibles et leurs exigences, consultez la [documentation de référence](/docs/api-reference/crm-meetings-v3/guide). ## Créer une réunion Pour créer un engagement de réunion, effectuez une requête `POST` à `/crm/v3/objects/meetings`. Dans le corps de la requête, ajoutez les détails de réunion dans un objet **properties**. Vous pouvez également ajouter un objet d'**association** pour associer votre nouvelle réunion à une fiche d'informations existante (par exemple, des contacts ou des entreprises). ### Propriétés Dans l'objet de propriété, vous pouvez inclure les champs suivants : | Champ | Description | | - | - | | `hs_timestamp` | Obligatoire. Ce champ marque la date et l'heure auxquelles la réunion a eu lieu. Vous pouvez utiliser soit un horodatage Unix en millisecondes, soit un format UTC. Lorsque la valeur de la propriété est manquante, la valeur est définie par défaut sur `hs_meeting_start_time.` | | `hs_meeting_title` | Le titre du rendez-vous. | | `hubspot_owner_id` | L'[ID du propriétaire](/docs/api-reference/crm-crm-owners-v3/guide) associé à la réunion. Ce champ détermine l'utilisateur listé comme le créateur de réunion sur la chronologie de la fiche d'informations. | | `hs_meeting_body` | La description de la réunion | | `hs_internal_meeting_notes` | Les notes internes que vous prenez pour votre équipe au cours d'une réunion et qui ne sont pas incluses dans la description de la réunion des participants. | | `hs_meeting_external_url` | L'URL externe de la réunion pour l'événement du calendrier. Par exemple, il peut s'agir d'un lien vers Google Agenda ou un lien vers un calendrier Microsoft Outlook. | | `hs_meeting_location` | Lieu de la réunion. Il peut s'agir d'une adresse physique, d'une salle de conférence, d'un lien vers une vidéoconférence ou d'un numéro de téléphone. Cela apparaît sur l'invitation de calendrier sur le calendrier du participant. | | `hs_meeting_start_time` | La date et l'heure auxquelles la réunion commence. La valeur de cette propriété doit correspondre à la valeur de `hs_timestamp`. | | `hs_meeting_end_time` | La date et l'heure auxquelles la réunion se termine. | | `hs_meeting_outcome` | Le résultat de la réunion. Les valeurs de résultat sont : planifiée, terminée, replanifiée, désistement et annulée. | | `hs_activity_type` | Le type de réunion. Les options sont basées sur les [types de réunion définis dans votre compte HubSpot.](https://knowledge.hubspot.com/fr/meetings-tool/how-do-i-create-and-use-call-and-meeting-types) | | `hs_attachment_ids` | Les ID des pièces jointes de la réunion. Les ID de pièces jointes multiples sont séparés par un point-virgule. | ### Associations Pour créer et associer une réunion à des fiches d'informations existantes, incluez un objet d'association dans votre requête. Par exemple, pour créer et associer une réunion à des contacts, votre requête peut ressembler à ce qui suit : ```json theme={null} // Example request body { "properties": { "hs_timestamp": "2021-03-23T01:02:44.872Z", "hubspot_owner_id": "11349275740", "hs_meeting_title": "Intro meeting", "hs_meeting_body": "The first meeting to discuss options", "hs_internal_meeting_notes": "These are the meeting notes", "hs_meeting_external_url": "https://Zoom.com/0000", "hs_meeting_location": "Remote", "hs_meeting_start_time": "2021-03-23T01:02:44.872Z", "hs_meeting_end_time": "2021-03-23T01:52:44.872Z", "hs_meeting_outcome": "SCHEDULED" }, "associations": [ { "to": { "id": 101 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 200 } ] }, { "to": { "id": 102 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 200 } ] } ] } ``` Les objets d'associations doivent inclure : | Champ | Description | | - | - | | `to` | La fiche d'informations à laquelle vous souhaitez associer la réunion, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre la réunion et la fiche d'informations. Inclut `associationCategory` et `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | Pour en savoir plus sur la création de réunions par lots, consultez la [documentation de référence](/docs/api-reference/crm-meetings-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fmeetings%2Fbatch%2Fcreate). ## Récupérer des réunions Vous pouvez récupérer des réunions individuellement ou en lot. Pour en savoir plus sur la récupération des lots, consultez la [documentation de référence](/docs/api-reference/crm-meetings-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fmeetings%2Fbatch%2Fread). Pour récupérer une réunion individuelle par son ID d'appel, effectuez une requête `GET` à `/crm/v3/objects/meetings/{meetingId}`. Vous pouvez aussi inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer. | | `associations` | Une liste séparée par des virgules des objets que voulez pour récupérer les ID des fiches d'informations associées. | Pour demander une liste de toutes les réunions, effectuez une requête `GET` à `crm/v3/objects/meetings`. Vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `limit` | Le nombre maximum de résultats à afficher par page. | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer. | ## Mettre à jour les réunions Vous pouvez mettre à jour des réunions individuellement ou par lots. Pour mettre à jour une réunion individuelle par son ID d'appel, effectuez une requête `PATCH` à `/crm/v3/objects/meetings/{meetingId}`. Dans le corps de la requête, incluez les propriétés de réunion que vous souhaitez mettre à jour : Par exemple, votre corps de requête peut ressembler aux éléments suivants : ```json theme={null} //Example PATCH request to https://api.hubspot.com/crm/v3/objects/meetings/{meetingId} { "properties": { "hs_timestamp": "2019-10-30T03:30:17.883Z", "hubspot_owner_id": "11349275740", "hs_meeting_title": "Intro meeting", "hs_meeting_body": "The first meeting to discuss options", "hs_internal_meeting_notes": "These are the meeting notes", "hs_meeting_external_url": "https://Zoom.com/0000", "hs_meeting_location": "Remote", "hs_meeting_start_time": "2021-03-23T01:02:44.872Z", "hs_meeting_end_time": "2021-03-23T01:52:44.872Z", "hs_meeting_outcome": "SCHEDULED" } }' ``` HubSpot ignorera les valeurs des propriétés inexistantes ou en lecture seule. Pour effacer une valeur de propriété, passez une chaîne vide comme valeur de propriété dans le corps de la requête. Pour en savoir plus sur la mise à jour par lots, consultez la [documentation de référence](/docs/api-reference/crm-meetings-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fmeetings%2Fbatch%2Fupdate). ### Associer des réunions existantes à des fiches d'informations Pour associer une réunion à des fiches d'informations, comme un contact et ses entreprises associées, effectuez une requête `PUT` à `/crm/v3/objects/meetings/{meetingId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. L'URL de la requête contient les champs suivants : | Champ | Description | | - | - | | `meetingId` | L'ID de la réunion. | | `toObjectType` | Le type d'objet auquel vous souhaitez associer la réunion (par exemple, contact ou entreprise). | | `toObjectId` | L'ID de la fiche d'informations avec laquelle vous souhaitez associer la réunion. | | `associationTypeId` | L'ID du type d'association entre la réunion et l'autre type d'objet. Vous pouvez récupérer cette valeur via l'[API des associations](/docs/api-reference/crm-associations-v3/guide). | Par exemple, l'URL de votre requête peut ressembler à ce qui suit : `https://api.hubspot.com/crm/v3/objects/meetings/17612479134/associations/contact/104901/200` ### Supprimer une association Pour supprimer une association entre une réunion et une fiche d'informations, faites une requête `DELETE` à la même URL que ci-dessus : `/crm/v3/objects/meetings/{meetingId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}` ## Épingler une réunion sur une fiche d'informations Vous pouvez [épingler une réunion](https://knowledge.hubspot.com/fr/records/pin-an-activity-on-a-record) sur une fiche d'informations afin qu'elle reste en haut de la chronologie de la fiche d'informations. La réunion doit déjà être associée à la fiche d'informations avant d'être épinglée, et vous ne pouvez épingler qu'une seule activité par fiches d'informations. Pour épingler une réunion, incluez l'`id` de la réunion dans le champ `hs_pinned_engagement_id` lors de la création ou de la mise à jour d'une fiche d'informations via les API objet. Découvrez-en davantage sur l'utilisation des API d'[entreprises](/docs/api-reference/crm-companies-v3/guide#pin-an-activity-on-a-company-record), de [contacts](/docs/api-reference/crm-contacts-v3/guide#pin-an-activity-on-a-contact-record), de [transactions](/docs/api-reference/crm-deals-v3/guide#pin-an-activity-on-a-deal-record), de [tickets](/docs/api-reference/crm-tickets-v3/guide#pin-an-activity-on-a-ticket-record) et d'[objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide). ## Supprimer des réunions Vous pouvez supprimer des réunions individuellement ou par lots, ce qui placera la réunion dans la corbeille dans HubSpot. Vous pouvez ensuite [restaurer la réunion à partir de la chronologie des fiches d'informations](https://knowledge.hubspot.com/fr/records/restore-deleted-activity-in-a-record). Pour supprimer une réunion individuelle par son ID d'appel, effectuez une requête `DELETE` à `/crm/v3/objects/meetings/{meetingId}`. Pour en savoir plus sur la suppression par lots, consultez la [documentation de référence](/docs/api-reference/crm-meetings-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Fmeetings%2F%7Bmeetingid%7D). # Search for meetings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/search/search-meetings specs/2026-09/crm-meetings-v2026-09.json POST /crm/objects/2026-09/meetings/search Rechercher des réunions en filtrant sur les propriétés, en effectuant des recherches par associations et en triant les résultats. > **Supported products** > **Required Scopes** # Update meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/meetings/update-meeting specs/2026-09/crm-meetings-v2026-09.json PATCH /crm/objects/2026-09/meetings/{meetingId} Effectue une mise à jour partielle d'un objet identifié par « {meetingId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {meetingId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create note Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/create-note specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes Créez une note avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de notes standard sont fournis. > **Supported products** > **Required Scopes** # Retrieve note Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/get-note specs/2026-09/crm-notes-v2026-09.json GET /crm/objects/2026-09/notes/{noteId} Lire un objet identifié par « {noteId} ». « {noteId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Engagements | Notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/guide Les fiches d'informations de contact stockent des informations sur des personnes. Les points de terminaison des contacts vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes. > **[Run in Postman](https://app.getpostman.com/run-collection/dd75d149eaa15806754f)** > **Exigences de portée** Vous pouvez enregistrer des notes sur des fiches d'informations du CRM pour ajouter des informations à la chronologie de la fiche d'informations ou associer une pièce jointe à une fiche d'informations. Par exemple, si vous avez besoin de garder une trace d'une conversation hors ligne que vous avez eue avec un contact, vous pouvez ajouter une note à sa fiche d'informations de contact avec les détails et les documents associés à la conversation. Les autres utilisateurs pourront alors consulter et référencer cette note. Vous pouvez gérer des notes soit [dans HubSpot](https://knowledge.hubspot.com/fr/records/manually-log-activities-on-records) soit via l'API de notes. Ci-dessous, découvrez les méthodes de base pour gérer les notes via l'API. Vous pouvez consulter tous les points de terminaison disponibles dans la [documentation de référence](/docs/api-reference/crm-notes-v3/guide). ## Créer une note Pour créer une note, effectuez une requête `POST` à `/crm/v3/objects/notes`. Dans le corps de la requête, ajoutez les détails de notes dans un objet **properties**. Vous pouvez également ajouter un objet d'**association** pour associer votre nouvelle note à une fiche d'informations existante (par exemple, des contacts ou des entreprises). ### Propriétés Dans l'objet de propriété, vous pouvez inclure les champs suivants : | Champ | Description | | - | - | | `hs_timestamp` | Obligatoire. Ce champ indique l'heure de création de la note et détermine où se trouve la note sur la chronologie de la fiche d'informations. Vous pouvez utiliser soit un horodatage Unix en millisecondes, soit un format UTC. | | `hs_note_body` | Le contenu du texte d'une note, limité à 65 536 caractères. | | `hubspot_owner_id` | L'[ID du propriétaire](/docs/api-reference/crm-crm-owners-v3/guide) associé à la note. Ce champ détermine l'utilisateur listé comme le créateur d'une note sur la chronologie de la fiche d'informations dans HubSpot. | | `hs_attachment_ids` | Les ID des pièces jointes de la note. Les ID de pièces jointes multiples sont séparés par un point-virgule. | ### Associations Pour créer et associer une note à des fiches d'informations existantes, incluez un objet d'association dans votre requête. Par exemple, pour créer une note et l'associer à une entreprise et à une transaction, votre corps de requête peut ressembler à ce qui suit : ```json theme={null} // Example POST request to https://api.hubspot.com/crm/v3/objects/notes { "properties": { "hs_timestamp": "2021-11-12T15:48:22Z", "hs_note_body": "Spoke with decision maker Carla. Attached the proposal and draft of contract.", "hubspot_owner_id": "14240720", "hs_attachment_ids": "24332474034;24332474044" }, "associations": [ { "to": { "id": 301 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 190 } ] }, { "to": { "id": 401 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 214 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Champ | Description | | - | - | | `to` | La fiche d'informations à laquelle vous souhaitez associer la note, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre la note et la fiche d'informations. Inclut la `associationCategory` et le `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | Pour en savoir plus sur la création de notes par lots, consultez la [documentation de référence](/docs/api-reference/crm-notes-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fnotes%2Fbatch%2Fcreate). ## Récupérer des notes Vous pouvez récupérer des notes individuellement ou par lots. Pour récupérer une note individuelle, effectuez une requête `GET` à `/crm/v3/objects/notes/{noteId}`. Pour demander une liste de toutes les notes, effectuez une requête `GET` à `/crm/v3/objects/notes`. Pour les deux points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si la note demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des types d'objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | Par exemple, pour récupérer des notes avec leur contenu textuel et tout ID de contact associé, l'URL de votre requête peut ressembler à ce qui suit : `https://api.hubapi.com/crm/v3/objects/notes?limit=10&properties=hs_note_body&associations=contact&archived=false`. Pour en savoir plus sur la récupération d'un lot de notes par identifiant interne ou par valeur de propriété unique, consultez la [documentation de référence](/docs/api-reference/crm-notes-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fnotes%2Fbatch%2Fread). ## Mettre à jour les notes Vous pouvez mettre à jour des notes individuellement ou par lots. Pour mettre à jour une note individuelle par son ID de note, effectuez une requête `PATCH` à `/crm/v3/objects/notes/{noteId}`. Dans le corps de la requête, incluez les propriétés de note que vous souhaitez mettre à jour : ```json theme={null} // Example PATCH request to https://api.hubspot.com/crm/v3/objects/notes/{noteID} { "properties": { "hs_note_body": "Spoke with decision maker Carla.", "hs_attachment_ids": "24332474034;24332474044" } } ``` HubSpot ignorera les valeurs des propriétés inexistantes ou en lecture seule. Pour effacer une valeur de propriété, passez une chaîne vide comme valeur de propriété dans le corps de la requête. Pour en savoir plus sur la mise à jour des notes par lots, consultez la [documentation de référence](/docs/api-reference/crm-notes-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fnotes%2Fbatch%2Fupdate). ### Associer des notes existantes à des fiches d'informations Pour associer une note à d'autres fiches d'informations du CRM, comme un contact, effectuez une requête `PUT` à `/crm/v3/objects/notes/{noteId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. L'URL de la requête contient les champs suivants : | Champ | Description | | - | - | | `noteId` | L'ID de la note | | `toObjectType` | Le type d'objet auquel vous souhaitez associer la note (par exemple, contact ou entreprise) | | `toObjectId` | L'ID de la fiche d'informations avec laquelle vous souhaitez associer la note. | | `associationTypeId` | Un identifiant unique pour indiquer le type d'association entre la note et l'autre objet. L'ID peut être représenté numériquement ou en snake case (ex : `note_to_contact`). Vous pouvez récupérer la valeur via l'[API des associations](/docs/api-reference/crm-associations-v3/guide). | Par exemple, l'URL de votre requête peut ressembler à ce qui suit : `https://api.hubspot.com/crm/v3/objects/notes/17147287858/associations/contact/581751/202` ### Supprimer une association Pour supprimer une association entre une note et une fiche d'informations, faites une requête `DELETE` à la même URL que ci-dessus : `/crm/v3/objects/notes/{noteId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}` ## Épingler une note sur une fiche d'informations Vous pouvez [épingler une note](https://knowledge.hubspot.com/fr/records/pin-an-activity-on-a-record) sur une fiche d'informations afin qu'elle reste en haut de la chronologie de la fiche d'informations. La note doit déjà être associée à la fiche d'informations avant d'être épinglée, et vous ne pouvez épingler qu'une seule activité par fiches d'informations. Pour épingler une note, incluez l'`id` de la note dans le champ `hs_pinned_engagement_id` lors de la création ou de la mise à jour d'une fiche d'informations via les API objet. Découvrez-en davantage sur l'utilisation des API d'[entreprises](/docs/api-reference/crm-companies-v3/guide#pin-an-activity-on-a-company-record)[, de contacts](/docs/api-reference/crm-contacts-v3/guide#pin-an-activity-on-a-contact-record), de [transactions](/docs/api-reference/crm-deals-v3/guide#pin-an-activity-on-a-deal-record), de [tickets](/docs/api-reference/crm-tickets-v3/guide#pin-an-activity-on-a-ticket-record) et d'[objets personnalisés](/docs/api-reference/crm-custom-objects-v3/guide). ## Supprimer des notes Vous pouvez supprimer des notes individuellement ou par lots, ce qui placera la note dans la corbeille dans HubSpot. Vous pouvez ensuite [restaurer la note à partir de la chronologie des fiches d'informations](https://knowledge.hubspot.com/fr/records/restore-deleted-activity-in-a-record). Pour supprimer une note individuelle par son ID de note, effectuez une requête `DELETE` à `/crm/v3/objects/notes/{noteId}`. Pour en savoir plus sur la suppression des notes, consultez la [documentation de référence](/docs/api-reference/crm-notes-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Fnotes%2F%7Bnoteid%7D). # HubSpot CRM embed Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/embed # CRM Search API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/search-the-crm # Understanding the CRM APIs Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/understanding-the-crm # Using Object APIs Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/using-object-apis # Create notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/batch/create-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/batch/create Créez plusieurs notes en une seule requête en fournissant les propriétés nécessaires pour chaque note. Cette opération renvoie les notes créées avec leurs identifiants uniques. > **Supported products** > **Required Scopes** # Delete notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/batch/delete-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/batch/archive Archivez plusieurs notes par leur identifiant en une seule requête. Cette opération déplace les notes spécifiées vers la corbeille, les rendant inaccessibles à partir des requêtes habituelles. > **Supported products** > **Required Scopes** # Retrieve notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/batch/get-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/batch/update-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/batch/update Mettez à jour plusieurs notes à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. Cette opération vous permet de modifier les propriétés de plusieurs notes en une seule requête, ce qui simplifie le processus de gestion des données de notes en masse. > **Supported products** > **Required Scopes** # Upsert notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/batch/upsert-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Delete a note Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/delete-note specs/2026-09/crm-notes-v2026-09.json DELETE /crm/objects/2026-09/notes/{noteId} Déplacer un objet identifié par « {noteId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve a note Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/get-notes specs/2026-09/crm-notes-v2026-09.json GET /crm/objects/2026-09/notes Lire une page de notes. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Search for notes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/search/search-notes specs/2026-09/crm-notes-v2026-09.json POST /crm/objects/2026-09/notes/search Effectuez une recherche de notes à l'aide de filtres, d'options de tri et d'autres paramètres de requête pour affiner les résultats. Ce point de terminaison permet d'effectuer des requêtes complexes pour localiser des notes spécifiques dans le système CRM. > **Supported products** > **Required Scopes** # Update note Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/notes/update-note specs/2026-09/crm-notes-v2026-09.json PATCH /crm/objects/2026-09/notes/{noteId} Effectue une mise à jour partielle d'un objet identifié par « {noteId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {noteId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/create-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/batch/create Créer un lot d'objets CRM d'un type spécifié dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui peut être utile pour importer efficacement des données ou les synchroniser avec des systèmes externes. Le corps de la requête doit inclure les propriétés de chaque objet à créer. > **Supported products** > **Required Scopes** # Archive postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/delete-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/batch/archive Archiver un lot d'objets CRM par leur ID. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui peut aider à rationaliser la gestion des données et les processus de nettoyage. > **Supported products** > **Required Scopes** # Retrieve postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/get-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Set default association Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/update-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json PUT /crm/objects/2026-09/{fromObjectType}/{fromObjectId}/associations/default/{toObjectType}/{toObjectId} Créer le type d'association par défaut entre deux types d'objets spécifiés dans le CRM. Ce point de terminaison est utile pour établir une relation générique entre différents objets CRM, tels que les contacts et les entreprises, ou les transactions et les tickets. > **Supported products** > **Required Scopes** # Update postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/update-postal-mail-objectType specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets simultanément en fournissant leurs propriétés. Il est utile pour les mises à jour en masse, garantissant la cohérence et l'efficacité dans la gestion des données CRM. > **Supported products** > **Required Scopes** # Upsert postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/batch/upsert-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/batch/upsert Créer ou mettre à jour un lot d'objets CRM à l'aide de valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, en garantissant que chaque objet est créé ou mis à jour en fonction des identifiants uniques fournis. > **Supported products** > **Required Scopes** # Create postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/create-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouvelles fiches d'informations à votre système CRM avec tous les détails nécessaires. La documentation et des exemples pour la création d'objets standard sont fournis. > **Supported products** > **Required Scopes** # Archive postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/delete-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json DELETE /crm/objects/2026-09/postal_mail/{postalMailId} Déplacez un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son ID, le retirant ainsi de l'utilisation active tout en le conservant pour une éventuelle restauration future. > **Supported products** > **Required Scopes** # Get all postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/get-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json GET /crm/objects/2026-09/postal_mail Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés à inclure via le paramètre de requête `properties`. Ce point de terminaison est utile pour récupérer une liste d'objets avec des attributs spécifiques pour un traitement ou une analyse ultérieure. > **Supported products** > **Required Scopes** # Get postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/get-postal-mail-objectId specs/2026-09/crm-postal-mail-v2026-09.json GET /crm/objects/2026-09/postal_mail/{postalMailId} Lire un objet identifié par « {objectId} » dans le « {objectType} » spécifié. Par défaut, « {objectId} » fait référence à l'ID d'objet interne, mais vous pouvez spécifier une propriété unique à l'aide du paramètre de requête « idProperty ». Vous pouvez contrôler les données renvoyées en utilisant le paramètre de requête « properties » pour spécifier les propriétés à inclure dans la réponse. > **Supported products** > **Required Scopes** # Postal Mail API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/guide # Search for postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/search/search-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json POST /crm/objects/2026-09/postal_mail/search Recherchez des objets CRM d'un type spécifié en utilisant divers filtres et critères. Ce point de terminaison vous permet d'effectuer des requêtes complexes pour récupérer les objets qui correspondent à vos conditions spécifiées. Il est utile pour trouver des objets spécifiques en fonction de leurs propriétés ou associations. > **Supported products** > **Required Scopes** # Update postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/update-postal-mail specs/2026-09/crm-postal-mail-v2026-09.json PATCH /crm/objects/2026-09/postal_mail/{postalMailId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update postal mail Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/postal-mail/update-postal-mail-objectId specs/2026-09/crm-postal-mail-v2026-09.json PATCH /crm/objects/2026-09/postal_mail/{postalMailId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a recurring task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/task-series/create-tasks-series specs/2026-09/crm-tasks-series-v2026-09.json POST /crm/task-series/2026-09 Créez une nouvelle série de tâches dans le CRM HubSpot. Ce point de terminaison vous permet de démarrer une série de tâches en fournissant les propriétés et les détails de la série nécessaires. Il est utile pour automatiser les séquences de tâches répétitives au sein de vos workflows CRM. > **Supported products** > **Required Scopes** # Stop recurring task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/task-series/delete-tasks-series specs/2026-09/crm-tasks-series-v2026-09.json DELETE /crm/task-series/2026-09/{taskId} Supprimez une série de tâches spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Cette opération supprime définitivement la série de tâches et ne peut pas être annulée. Assurez-vous de disposer des autorisations nécessaires pour effectuer cette action. > **Supported products** > **Required Scopes** # Retrieve recurring task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/task-series/get-tasks-series specs/2026-09/crm-tasks-series-v2026-09.json GET /crm/task-series/2026-09/{taskId} Récupérer les détails d'une série de tâches spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux propriétés et aux informations de série associées à l'ID de tâche spécifié. Il est utile pour obtenir des informations détaillées sur une série de tâches, y compris les propriétés personnalisées. > **Supported products** > **Required Scopes** # Task series API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/task-series/guide # Update recurring task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/task-series/update-tasks-series specs/2026-09/crm-tasks-series-v2026-09.json PATCH /crm/task-series/2026-09/{taskId} Mettez à jour les détails d'une série de tâches spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de modifier les propriétés et les configurations de série pour la tâche identifiée par l'ID de tâche. Utilisez-le pour ajuster la planification des tâches ou mettre à jour les informations relatives aux tâches. > **Supported products** > **Required Scopes** # Create tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/batch/create-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/batch/create Créez plusieurs tâches dans une seule requête en fournissant un lot de propriétés et d'associations de tâches. Ce point de terminaison permet de créer efficacement des tâches en traitant plusieurs tâches ensemble. > **Supported products** > **Required Scopes** # Delete tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/batch/delete-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/batch/archive Archivez un lot de tâches en fonction de leur ID, en les déplaçant vers la corbeille. Cette opération nécessite qu'une liste d'ID de tâches soit fournie dans le corps de la requête. > **Supported products** > **Required Scopes** # Retrieve tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/batch/get-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/batch/update-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/batch/update Mettez à jour plusieurs tâches en une seule requête à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. Cette opération vous permet de modifier les propriétés de chaque tâche du lot, garantissant ainsi une gestion efficace des données des tâches. > **Supported products** > **Required Scopes** # Upsert tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/batch/upsert-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create a task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/create-task specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks Créez une tâche avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de tâches standard sont fournis. > **Supported products** > **Required Scopes** # Delete a task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/delete-task specs/2026-09/crm-tasks-v2026-09.json DELETE /crm/objects/2026-09/tasks/{taskId} Déplacer un objet identifié par « {taskId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve a task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/get-task specs/2026-09/crm-tasks-v2026-09.json GET /crm/objects/2026-09/tasks/{taskId} Lire un objet identifié par « {taskId} ». « {taskId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/get-tasks specs/2026-09/crm-tasks-v2026-09.json GET /crm/objects/2026-09/tasks Lire une page de tâches. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Tasks API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/guide # Search for tasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/search/search-tasks specs/2026-09/crm-tasks-v2026-09.json POST /crm/objects/2026-09/tasks/search Effectuez une recherche de tâches en fonction des critères fournis, notamment les filtres, les propriétés et les options de tri. Cela permet de récupérer les tâches qui correspondent à des conditions ou à des valeurs de propriété spécifiques. > **Supported products** > **Required Scopes** # Subtasks Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/subtasks-guide # Update a task Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/activities/tasks/update-task specs/2026-09/crm-tasks-v2026-09.json PATCH /crm/objects/2026-09/tasks/{taskId} Effectue une mise à jour partielle d'un objet identifié par « {taskId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {taskId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Associate records (default) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/batch/create-associations specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/associate/default Créer le type d'association par défaut (le plus générique) entre deux types d'objets > **Supported products** > **Required Scopes** # Associate records (labeled) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/batch/create-associations-labeled specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/create Créer en lot des associations pour les objets > **Supported products** > **Required Scopes** # Delete specific labels Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/batch/delete-association-labels specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/labels/archive Supprimer en lot des étiquettes d'association spécifiques pour des objets. La suppression d'une association non étiquetée supprimera également toutes les associations étiquetées entre ces deux objets. > **Supported products** > **Required Scopes** # Remove associations Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/batch/delete-associations specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/archive Supprimer en lot les associations pour les objets > **Supported products** > **Required Scopes** # Retrieve associations Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/batch/get-associations specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/batch/read Lire en lot les associations pour des objets d'un type d'objet spécifique. Le champ « après » dans un objet de pagination retourné peut être ajouté avec l'« identifiant » pour récupérer la page suivante des associations à partir de cet identifiant d'objet. Le champ « lien » est obsolète et doit être ignoré. Remarque : le champ « pagination » ne sera présent que s'il y a plus de pages et sera absent dans le cas contraire. > **Supported products** > **Required Scopes** # Remove association between records Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/delete-association specs/2026-09/crm-associations-v2026-09.json DELETE /crm/objects/2026-09/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} supprime toutes les associations entre deux fiches d'informations. > **Supported products** > **Required Scopes** # API du CRM | Associations v4 Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/guide Les points de terminaison pour les associations de CRM sont utilisés pour gérer les associations entre des tickets, des produits, des lignes de produit et leurs contacts, entreprises et transactions associés. > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-ebc9dd6f-bbd4-412b-b688-3553b6507c49)** > **Exigences de portée** # Associations v4 > [!WARNING] > > Pour la version précédente, veuillez consulter la documentation de [l’API d’associations v3](/docs/api-reference/crm-associations-v3/guide). Les associations représentent les relations entre les objets et les activités dans le CRM de HubSpot. Des associations de fiches d’informations peuvent exister entre des fiches d’informations de différents objets (par exemple : de Contact à Entreprise) ou au sein d’un même objet (par exemple : Entreprise à Entreprise). Vous pouvez utiliser les points de terminaison d'associations pour créer, récupérer, mettre à jour, ou supprimer des associations entre des fiches d'informations, ou des fiches d'informations et des activités. Les points de terminaison de schéma d’association vous permettent d’afficher les types d’association pris en charge dans votre compte, ainsi que de créer vos propres types d’association et d’attribuer des libellés à vos relations de fiche d’informations. Les libellés d’association sont pris en charge entre les contacts, les entreprises, les transactions, les tickets et les objets personnalisés, et peuvent être [utilisés dans tous les outils HubSpot](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels#use-association-labels-in-hubspot-tools) tels que les listes et les workflows. Découvrez-en davantage sur les API d'objets, de fiches d'informations, de propriétés et d'associations dans le [guide Comprendre le CRM](/docs/guides/crm/understanding-the-crm). > [!NOTE] > > ### Remarque: > > L’API d’associations v4 est prise en charge dans la version 9.0.0 ou ultérieure du client NodeJS HubSpot. ## HubSpot a défini des types d’association HubSpot fournit un ensemble de types d’association prédéfinis (par exemple : contact sans libellé de l’entreprise), mais les administrateurs de compte peuvent [définir leurs propres libellés d’association](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels) pour fournir un contexte supplémentaire pour les relations entre les fiches d’informations (par exemple : responsable et employé). Il existe deux types d’association définis par HubSpot : * **Principale** : l’entreprise principale à laquelle l’autre fiche d’informations est associée. Les associations principales peuvent être utilisées dans les outils HubSpot tels que [les listes et les workflows](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels#use-associations-in-hubspot-tools). Pour les fiches d’informations contenant plusieurs entreprises associées, cette API prend en charge la modification de l’entreprise considérée comme principale. * **Sans libellé** : un type d’association ajouté lorsqu’une fiche d’informations de contact, d’entreprise, de transaction, de ticket ou d’objet personnalisé est associée. Ce type indique qu’une association existe et sera toujours renvoyée dans les réponses avec une valeur de **libellé** de `null`. Lorsqu’une fiche d’informations dispose d’une association principale ou d’un libellé d’association personnalisé, ces types seront répertoriés avec le type d’association sans libellé. Vous pouvez visualiser tous les types d’association définis par HubSpot dans [cette section](#association-type-id-values). ## Libellés simples ou jumelés Il existe deux types de [libellés d’association](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels) que vous pouvez utiliser pour décrire les relations entre des fiches d’informations : * **Unique** : un libellé qui s’applique aux deux fiches d’informations de la relation. Par exemple : *Ami* ou *Collègue*. * **Jumelé** : une paire de libellés pour les cas où des mots différents sont utilisés pour décrire chaque aspect de la relation des fiches d’informations associées. Par exemple : *Parent* et *Enfant* ou *Employeur* et *Employé*. Pour créer des libellés appariés, vous devez inclure le champ `inverseLabel` dans votre demande pour nommer le deuxième libellé de la paire. ## Créer des types d’association Vous pouvez créer des types d’association personnalisés [dans HubSpot](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels) ou via le point de terminaison d’API du schéma d’association. Vous pouvez créer jusqu’à 10 types d’association entre chaque paire d’objets (par exemple : contacts et entreprises, contacts et contacts). Pour créer un type d’association via l’API, effectuez une demande `POST` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels` et incluez les éléments suivants dans votre demande : * **nom** : le nom interne du type d’association. Cette valeur ne peut pas comprendre de traits d’union ni commencer par un caractère numérique. * **libellé** : le nom du [libellé d’association tel qu’il apparaît dans HubSpot](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels). * **inverseLabel** (libellés jumelés uniquement) : le nom du deuxième libellé de la paire de libellés. Par exemple, votre demande pourrait ressembler à ce qui suit : ```json theme={null} ///Example request body - Single label { "label": "Partner", "name": "partner" } ``` ```json theme={null} ///Example request body - Paired labels { "label": "Manager", "inverseLabel": "Employee", "name": "manager_employee" } ``` ## Récupérer les types d’association Pour afficher les types d’association entre des objets spécifiques, effectuez une demande `GET` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels`. Vous recevrez un tableau contenant chaque élément : * **catégorie** : si le type d’association a été créé par HubSpot (`HUBSPOT_DEFINED`) ou par un utilisateur (`USER_DEFINED`). * \*\*typeId: \*\* l’ID numérique pour ce type d’association. Ceci est utilisé pour [définir un libellé lors de l’association de fiches d’informations](#associate-with-label). Consultez [cette liste](#association-type-id-values) pour toutes les valeurs `typeId` définies par HubSpot. * **libellé** : le libellé alphanumérique. Il s’agit de la valeur `null` du type d’association sans libellé. Vous pouvez également trouver ces valeurs dans HubSpot [dans vos paramètres d’association](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels#association-label-api-details). ## Associer des fiches d'informations ### Associer des fiches d'informations sans libellé Vous pouvez créer une association sans libellé par défaut entre deux fiches d’informations ou configurer des associations sans libellé pour des fiches d’informations en masse. Pour configurer une association individuelle par défaut entre deux fiches d’informations, effectuez une demande `PUT` à `/crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}` Dans l'URL de la demande, comprend : * `fromObjectType`\*\* :\*\* l'ID de l'objet que vous associez. Pour trouver les valeurs d’ID, consultez cette [liste d’ID de types d’objet,](/docs/guides/crm/understanding-the-crm#object-type-id) ou pour les contacts, les entreprises, les transactions, les tickets et les notes, vous pouvez utiliser le nom d’objet (par exemple : `contact`, `company`). * `fromObjectId`\*\* :\*\* l’ID de la fiche d’informations à associer. * `toObjectType`\*\* :\*\* l'ID de l'objet auquel vous associez la fiche d'informations. Pour trouver les valeurs d’ID, consultez cette [liste d’ID de types d’objet,](/docs/guides/crm/understanding-the-crm#object-type-id) ou pour les contacts, les entreprises, les transactions, les tickets et les notes, vous pouvez utiliser le nom d’objet (par exemple : `contact`, `company`). * `toObjectId`\*\* :\*\* l’ID de la fiche d’informations à associer. Par exemple : pour associer une fiche d’informations de contact dont l’ID est 12345 à une fiche d’informations d’entreprise dont l’ID est `67891`, l’URL de votre demande sera : `/crm/v4/objects/contact/12345/associations/default/company/67891`. Pour configurer des associations par défaut en masse, effectuez une demande `POST` à `crm/v4/associations/{fromObjectType}/{toObjectType}/batch/associate/default`. Dans le corps de la demande, incluez les valeurs `objectId` des fiches d’informations que vous souhaitez associer. > [!WARNING] > > ### Remarque: > > Le nombre d’associations qu’une fiche d’informations peut avoir dépend de [l’objet et de votre abonnement HubSpot.](https://legal.hubspot.com/hubspot-product-and-services-catalog#TechnicalLimits:~:text=CRM%20Record%20Association%20Limits) ### Associer des fiches d'informations avec libellé Pour associer deux fiches d’informations et définir un libellé pour décrire l’association, effectuez une demande `PUT` à `/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}`. Dans le corps de la demande, incluez `associationCategory` et `associationTypeId` pour indiquer le type d’association que vous souhaitez créer. Si vous créez des associations sans libellé, vous pouvez utiliser les points de terminaison par défaut décrits dans la [section ci-dessus](#associate-records-without-a-label), qui ne nécessitent pas `associationCategory` ou `associationTypeId`. Si vous créez des associations avec un libellé, vous pouvez consultez cette [liste d’ID de type par défaut](#association-type-id-values) ou vous devrez récupérer les types d’association personnalisés entre ces objets. > [!NOTE] > > ### Remarque: > > Pour les relations entre les objets croisés et les libellés jumelés, assurez-vous d’utiliser la méthode `typeId` qui renvoie à la bonne direction (par exemple : Contact à Entreprise vs Entreprise à Contact, Employé à Responsable ou Responsable à Employé). Par exemple : pour associer un contact à une transaction à l’aide d’un libellé personnalisé : 1\. Effectuez une demande `GET` à `/crm/v4/associations/contact/deal/labels`. 2\. Dans la réponse, examinez les valeurs `typeId` et `category` du libellé. L’ID sera un nombre (par exemple : `36`) et la catégorie sera toujours `USER_DEFINED` pour les libellés personnalisés. 3\. Effectuez une demande `PUT` à `/crm/v4/objects/contact/{objectId}/associations/deal/{toObjectId}` avec le corps de requête suivant : ```json theme={null} /// Example request body [ { "associationCategory": "USER_DEFINED", "associationTypeId": 36 } ] ``` ## Définir et gérer des limites d’association Vous pouvez définir des [limites](https://knowledge.hubspot.com/object-settings/set-limits-for-record-associations) pour le nombre de fiches d’informations associées entre les objets ou la fréquence à laquelle un libellé peut être utilisé pour décrire les associations. Il existe également [des limites techniques et des limites en fonction de votre abonnement HubSpot](https://legal.hubspot.com/hubspot-product-and-services-catalog). ### Créer ou mettre à jour des limites d’association Vous pouvez créer de nouvelles limites d’association ou mettre à jour celles qui existent déjà entre des objets. * Pour créer des limites, effectuez une demande `POST` à `crm/v4/associations/definitions/configurations/{fromObjectType}/{toObjectType}/batch/create`. * Pour mettre à jour les limites existantes, effectuez une demande `POST` à `crm/v4/associations/definitions/configurations/{fromObjectType}/{toObjectType}/batch/update`. Dans le corps de la demande, ajoutez `inputs` aux éléments suivants : | Paramètre | Description | | - | - | | `category` | La catégorie de l’association pour laquelle vous définissez une limite, soit `HUBSPOT_DEFINED` ou `USER_DEFINED`. | | `typeId` | L’ID numérique du type d’association pour lequel vous souhaitez définir une limite. Consultez [cette liste](#association-type-id-values) de valeurs `typeId` par défaut ou [récupérez la valeur](#retrieve-association-types) pour les libellés personnalisés. | | `maxToObjectIds` | Le nombre maximal d’associations autorisé pour le type d’association. | Par exemple, pour définir des limites auxquelles une transaction peut être associée à un maximum de cinq contacts, avec un seul contact intitulé *Point de contact* pour une transaction, votre demande ressemblerait à ce qui suit : ```json theme={null} //Example request POST crm/v4/associations/definitions/configurations/deal/contact/batch/create { "inputs": [ { "category": "HUBSPOT_DEFINED", "typeId": 3, "maxToObjectIds": 5 }, { "category": "USER_DEFINED", "typeId": 35, "maxToObjectIds": 1 } ] } ``` ### Récupérer les limites d’association * Pour lire toutes les limites d’association définies, effectuez une demande `GET` à `/crm/v4/associations/definitions/configurations/all`. Cela renverra des limites d’association personnalisées définies pour tous les objets. * Pour lire les limites d’association entre deux objets spécifiques, effectuez une demande `GET` à `/crm/v4/associations/definitions/configurations/{fromObjectType}/{toObjectType}`. Pour les deux demandes, la réponse renverra les valeurs des associations pour `category`, `typeId`, `maxToObjectIds` et `label`. Par exemple, si vous récupérez les limites entre les transactions et les contacts, la réponse ressemblera à ceci : ```json theme={null} //Example response GET crm/v4/associations/definitions/configurations/deal/contact { "results": [ { "category": "HUBSPOT_DEFINED", "typeId": 3, "userEnforcedMaxToObjectIds": 5, "label": null } ] } ``` ### Supprimer les limites d’association Pour supprimer des limites d’association spécifiques, effectuez une demande `POST` à `/crm/v4/associations/definitions/configurations/{fromObjectType}/{toObjectType}/batch/purge`. Dans le corps de la demande, incluez les valeurs `category` et `typeId` des types d’association pour lesquels vous souhaitez supprimer les limites. Par exemple, pour supprimer la limite *Point de contact* entre les transactions et les contacts, la demande ressemblerait à ceci : ```json theme={null} //Example request POST crm/v4/associations/definitions/configurations/deal/contact/batch/purge { "inputs": [ { "category": "USER_DEFINED", "typeId": 35 } ] } ``` En cas de réussite, vous recevrez une réponse 204 et la limite incluse reviendra au système par défaut (c’est-à-dire que de nombreux contacts peuvent avoir le libellé *Point de contact*). ## Rapport sur l’utilisation fréquente des associations Il existe des [limites techniques au nombre d’associations qu’une fiche d’informations peut avoir](https://legal.hubspot.com/hubspot-product-and-services-catalog). Vous pouvez utiliser l’API d’associations pour récupérer un rapport de fiches d’informations qui approchent ou ont atteint la limite maximale pour les associations. Pour récupérer le rapport, effectuez une demande `POST` à `crm/v4/associations/usage/high-usage-report/{userID}`. Le fichier contient des fiches d’informations utilisant 80 % ou plus de leur limite d’association. Par exemple, si une entreprise peut être associée à un maximum de 50 000 contacts, elle sera incluse dans le fichier si elle compte 40 000 contacts associés ou plus. Le fichier sera envoyé à l’e-mail de l’utilisateur dont l’ID a été inclus dans l’URL de la demande. Découvrez comment récupérer des ID utilisateur avec [l’API d’utilisateurs](/docs/api-reference/settings-user-provisioning-v3/guide). ## Valeurs d’ID de type d’association Les tableaux suivants incluent les valeurs `associationTypeId` définies par HubSpot qui précisent le type d’association. Les types d’associations varient en fonction des objets inclus et de la direction de l’association (par exemple : Contact à Entreprise est différent de Entreprise à Contact). Si vous créez des objets personnalisés ou des libellés d’association personnalisés, les types d’association associés auront des valeurs `typeId` uniques que vous devrez [récupérer](#retrieve-association-type) ou localiser dans vos [paramètres d’association dans HubSpot](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels#association-label-api-details). > [!WARNING] > > ### Remarque: > > Les types d’association d’entreprise par défaut incluent un type d’association sans libellé et un type d’association principal. Si une fiche d’informations a plusieurs entreprises associées, une seule peut être l’entreprise principale. Les autres associations peuvent être sans libellé ou avoir des libellés d’association personnalisés. #### Contact à objet | ID DU TYPE | Type d'association | | - | - | | `449` | Contact à contact | | `279` | Contact à entreprise | | `1` | Contact à entreprise (principal) | | `4` | Contact à transaction | | `15` | Contact à ticket | | `193` | Contact à appel | | `197` | Contact à e-mail | | `199` | Contact à réunion | | `201` | Contact à note | | `203` | Contact à tâche | | `82` | Contact à communication (message SMS, WhatsApp ou LinkedIn) | | `454` | Contact à courrier postal | | `587` | Contact à panier | | `508` | Contact à commande | | `178` | Contact à facture | | `388` | Contact à paiement | | `296` | Contact à abonnement | #### Entreprise à objet | ID DU TYPE | Type d'association | | - | - | | `450` | Entreprise à entreprise | | `14` | Enfant à entreprise parent | | `13` | Parent à entreprise enfant | | `280` | Entreprise à contact | | `2` | Entreprise à contact (principal) | | `342` | Entreprise à transaction | | `6` | Entreprise à transaction (principal) | | `340` | Entreprise à ticket | | `25` | Entreprise à ticket (principal) | | `181` | Entreprise à appel | | `185` | Entreprise à e-mail | | `187` | Entreprise à réunion | | `189` | Entreprise à note | | `191` | Entreprise à tâche | | `88` | Entreprise à communication (message SMS, WhatsApp ou LinkedIn) | | `460` | Entreprise à courrier postal | | `180` | Entreprise à facture | | `510` | Entreprise à commande | | `390` | Entreprise à paiement | | `298` | Entreprise à abonnement | #### Transaction à objet | ID DU TYPE | Type d'association | | - | - | | `451` | Transaction à transaction | | `3` | Transaction à contact | | `341` | Transaction à entreprise | | `5` | Transaction à entreprise (principal) | | `27` | Transaction à ticket | | `205` | Transaction à appel | | `209` | Transaction à e-mail | | `211` | Transaction à réunion | | `213` | Transaction à note | | `215` | Transaction à tâche | | `86` | Transaction à communication (message SMS, WhatsApp ou LinkedIn) | | `458` | Transaction à courrier postal | | `313` | Transaction à répartition de transaction | | `19` | Transaction à ligne de produit | | `176` | Transaction à facture | | `511` | Transaction à commande | | `392` | Transaction à paiement | | `630` | Transaction à produit | | `63` | Transaction à devis | | `300` | Transaction à abonnement | #### Ticket à objet | ID DU TYPE | Type d'association | | - | - | | `452` | Ticket à ticket | | `16` | Ticket à contact | | `339` | Ticket à entreprise | | `26` | Ticket à entreprise (principal) | | `28` | Ticket à transaction | | `219` | Ticket à appel | | `223` | Ticket à e-mail | | `223` | Ticket à réunion | | `227` | Ticket à note | | `229` | Ticket à tâche | | `84` | Ticket à communication (message SMS, WhatsApp ou LinkedIn) | | `456` | Ticket à courrier postal | | `32` | Ticket à fil de conversation | | `278` | Ticket à conversation | | `526` | Ticket à commande | ### Lead à objet | ID DU TYPE | Type d'association | | - | - | | `578` | Lead à contact principal | | `596` | Lead à appel | | `598` | Lead à e-mail | | `600` | Lead à réunion | | `602` | Lead à communication | | `608` | Lead à contact | | `610` | Lead à entreprise | | `646` | Lead à tâche | #### Appel à objet | ID DU TYPE | Type d'association | | - | - | | `194` | Appel à contact | | `182` | Appel à entreprise | | `206` | Appel à transaction | | `220` | Appel à ticket | #### E-mail à objet | ID DU TYPE | Type d'association | | - | - | | `198` | E-mail à contact | | `186` | E-mail à entreprise | | `210` | E-mail à transaction | | `224` | E-mail à ticket | #### Réunion à objet | ID DU TYPE | Type d'association | | - | - | | `200` | Réunion à contact | | `188` | Réunion à entreprise | | `212` | Réunion à transaction | | `226` | Réunion à ticket | #### Note à objet | ID DU TYPE | Type d'association | | - | - | | `202` | Note à contact | | `190` | Note à entreprise | | `214` | Note à transaction | | `228` | Note à ticket | #### Courrier postal à objet | ID DU TYPE | Type d'association | | - | - | | `453` | Courrier postal à contact | | `459` | Courrier postal à entreprise | | `457` | Courrier postal à transaction | | `455` | Courrier postal à ticket | #### Devis à objet | ID DU TYPE | Type d'association | | - | - | | `69` | Devis à contact | | `71` | Devis à entreprise | | `64` | Devis à transaction | | `67` | Devis à ligne de produit | | `286` | Devis à modèle de devis | | `362` | Devis à remise | | `364` | Devis à frais | | `366` | Devis à taxe | | `702` | Signataire du contact (pour les signatures électroniques) | | `733` | Devis à panier | | `408` | Devis à facture | | `731` | Devis à commande | | `398` | Devis à paiement | | `304` | Devis à abonnement | #### Tâche à objet | ID DU TYPE | Type d'association | | - | - | | `204` | Tâche à contact | | `192` | Tâche à entreprise | | `216` | Tâche à transaction | | `230` | Tâche à ticket | #### Communication (message SMS, WhatsApp ou LinkedIn) à objet | ID DU TYPE | Type d'association | | - | - | | `81` | Communication (message SMS, WhatsApp ou LinkedIn) à contact | | `87` | Communication (message SMS, WhatsApp ou LinkedIn) à entreprise | | `85` | Communication (message SMS, WhatsApp ou LinkedIn) à transaction | | `83` | Communication (message SMS, WhatsApp ou LinkedIn) à ticket | ### Commande à objet | ID DU TYPE | Type d'association | | - | - | | `593` | Commande à panier | | `507` | Commande à contact | | `509` | Commande à entreprise | | `512` | Commande à transaction | | `362` | Commande à remise | | `521` | Commande à code de remise | | `408` | Commande à facture | | `513` | Commande à ligne de produit | | `523` | Commande à paiement | | `730` | Commande à devis | | `516` | Commande à abonnement | | `726` | Commande à tâche | | `525` | Commande à ticket | ### Panier à objet | ID DU TYPE | Type d'association | | - | - | | `586` | Panier à contact | | `588` | Panier à remise | | `590` | Panier à ligne de produit | | `592` | Panier à commande | | `732` | Panier à devis | | `728` | Panier à tâche | | `594` | Panier à ticket | ## Associations v1 (hérité) Si vous utilisez l’API d’associations v1, consultez le tableau ci-dessous pour plus d’informations sur les ID à utiliser lors de l’association de fiches d’informations. | Type d'association | ID | | - | - | | Contact à entreprise | 1 | | Entreprise à contact (par défaut) | 2 | | Entreprise à contact (tous les libellés) | 280 | | Transaction à contact | 3 | | Contact à transaction | 4 | | Transaction à entreprise | 5 | | Entreprise à transaction | 6 | | Entreprise à interaction | 7 | | Interaction à entreprise | 8 | | Contact à interaction | 9 | | Interaction à contact | 10 | | Transaction à interaction | 11 | | Interaction à transaction | 12 | | Entreprise parent à entreprise enfant | 13 | | Entreprise enfant à entreprise parent | 14 | | Contact à ticket | 15 | | Ticket à contact | 16 | | Ticket à interaction | 17 | | Interaction à ticket | 18 | | Transaction à ligne de produit | 19 | | Ligne de produit à transaction | 20 | | Entreprise à ticket | 25 | | Ticket à entreprise | 26 | | Transaction à ticket | 27 | | Ticket à transaction | 28 | # Report high usage Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/report-high-usage specs/2026-09/crm-associations-v2026-09.json POST /crm/associations/2026-09/usage/high-usage-report/{userId} Demande un rapport sur tous les objets du portail qui ont une utilisation élevée des associations > **Supported products** > **Required Scopes** # Associate records (default) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/update-association specs/2026-09/crm-associations-v2026-09.json PUT /crm/objects/2026-09/{fromObjectType}/{fromObjectId}/associations/default/{toObjectType}/{toObjectId} Créer le type d'association par défaut (le plus générique) entre deux types d'objets > **Supported products** > **Required Scopes** # Associate records (labeled) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/update-association-labeled specs/2026-09/crm-associations-v2026-09.json PUT /crm/objects/2026-09/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} Définir des libellés d'association entre deux fiches d'informations. > **Supported products** > **Required Scopes** # Configure associations Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/guide # Create association label Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/labels/create-associations-label specs/2026-09/crm-associations-schema-v2026-09.json POST /crm/associations/2026-09/{fromObjectType}/{toObjectType}/labels Créez un nouveau libellé qui décrit la relation entre deux types d'objets CRM spécifiés. Cela peut aider à classer et gérer plus efficacement les associations. > **Supported products** > **Required Scopes** # Batch create labels Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/labels/create-associations-label-batch specs/2026-09/crm-associations-schema-v2026-09.json POST /crm/associations/2026-09/definitions/configurations/{fromObjectType}/{toObjectType}/batch/create Configurer en masse les limites d'association entre deux types d'objets. > **Supported products** > **Required Scopes** # Delete association label Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/labels/delete-associations-label specs/2026-09/crm-associations-schema-v2026-09.json DELETE /crm/associations/2026-09/{fromObjectType}/{toObjectType}/labels/{associationTypeId} Supprimez un libellé spécifique pour l'association entre deux types d'objets CRM. > **Supported products** > **Required Scopes** # Retrieve association labels Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/labels/get-associations-label specs/2026-09/crm-associations-schema-v2026-09.json GET /crm/associations/2026-09/{fromObjectType}/{toObjectType}/labels Récupérez tous les libellés qui décrivent les relations entre deux types d'objets CRM spécifiés. Ces libellés fournissent du contexte sur la nature des associations. > **Supported products** > **Required Scopes** # Update association label Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/labels/update-associations-label specs/2026-09/crm-associations-schema-v2026-09.json PUT /crm/associations/2026-09/{fromObjectType}/{toObjectType}/labels Mettez à jour un nouveau libellé qui décrit la relation entre deux types d'objets CRM spécifiés. Cela permet d'apporter des modifications aux libellés d'association existants de sorte à mieux refléter la nature de la relation. > **Supported products** > **Required Scopes** # Configure association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/limits/create-associations-limits specs/2026-09/crm-associations-schema-v2026-09.json POST /crm/associations/2026-09/definitions/configurations/{fromObjectType}/{toObjectType}/batch/create Configurer en masse les limites d'association entre deux types d'objets. > **Supported products** > **Required Scopes** # Remove association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/limits/delete-associations-limits specs/2026-09/crm-associations-schema-v2026-09.json POST /crm/associations/2026-09/definitions/configurations/{fromObjectType}/{toObjectType}/batch/purge Supprimer en masse les limites définies pour les types d'association entre deux types d'objets. > **Supported products** > **Required Scopes** # Retrieve association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/limits/get-all-associations-limits specs/2026-09/crm-associations-schema-v2026-09.json GET /crm/associations/2026-09/definitions/configurations/{fromObjectType}/{toObjectType} Récupérer les détails de configuration des associations entre deux types d'objets CRM spécifiés. Utilisez ce point de terminaison pour comprendre les limites qui ont été définies pour des types d'associations spécifiques. > **Supported products** > **Required Scopes** # Retrieve all association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/limits/get-associations-limits specs/2026-09/crm-associations-schema-v2026-09.json GET /crm/associations/2026-09/definitions/configurations/all Récupérer toutes les limites d'association configurées entre les objets, y compris les détails sur la manière dont les différents types d'objets CRM sont associés les uns aux autres. > **Supported products** > **Required Scopes** # Update association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associations-schema/limits/update-associations-limits specs/2026-09/crm-associations-schema-v2026-09.json POST /crm/associations/2026-09/definitions/configurations/{fromObjectType}/{toObjectType}/batch/update Mettez à jour en lots les limites d'association configurées entre deux types d'objets. > **Supported products** > **Required Scopes** # Associations overview Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/overview # Fetch object type enablement status Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/crm-data-model/get-object-library specs/2026-09/crm-object-library-v2026-09.json GET /crm/object-library/2026-09/enablement Pour tous les types d'objets prenant en charge l'activation, indique s'ils sont activés ou désactivés. > **Supported products** > **Required Scopes** # Is object type is enabled Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/crm-data-model/get-object-library-objectTypeId specs/2026-09/crm-object-library-v2026-09.json GET /crm/object-library/2026-09/enablement/{objectTypeId} Vérifier si le type d'objet est activé > **Supported products** > **Required Scopes** # Object Activation API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/crm-data-model/guide # Start an export Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/exports/create-export specs/2026-09/crm-exports-v2026-09.json POST /crm/exports/2026-09/export/async Commence l'exportation des données du CRM pour le portail conformément à la demande > **Supported products** > **Required Scopes** # Retrieve export details Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/exports/get-export specs/2026-09/crm-exports-v2026-09.json GET /crm/exports/2026-09/export/{exportId} Récupérez des informations détaillées sur un export CRM spécifique, y compris son état actuel et ses propriétés. > **Supported products** > **Required Scopes** # Retrieve export status Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/exports/get-export-status specs/2026-09/crm-exports-v2026-09.json GET /crm/exports/2026-09/export/async/tasks/{taskId}/status Renvoie le statut de l'export avec TaskID, y compris l'URL du fichier résultant si le statut de l'export est TERMINÉ > **Supported products** > **Required Scopes** # Exports Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/exports/guide Découvrez comment utiliser l'API d'exports pour exporter des fiches d'informations dans des vues ou des listes depuis votre compte HubSpot. > **Exigences de portée** Utilisez l'API d'exports pour exporter des fiches d'informations et des données de propriété depuis votre compte HubSpot, récupérez une URL pour télécharger un fichier d'export ou voir le statut d'un export. Dans HubSpot, vous pouvez également [exporter des fiches d'informations](https://knowledge.hubspot.com/fr/import-and-export/export-records) ou [afficher un journal des exports passés dans votre compte.](https://knowledge.hubspot.com/fr/import-and-export/view-a-log-of-your-users-exports-in-your-account) ## Lancer un export Pour démarrer un export, effectuez une requête `POST` à `/crm/v3/exports/export/async`. Le corps de votre requête doit indiquer des informations telles que le format de fichier, l'objet et les propriétés que vous souhaitez exporter ainsi que le type d'export que vous effectuez (par exemple : l'export d'une vue d'objet ou d'une liste). Vous pouvez également filtrer les données de propriété à exporter en fonction d'opérateurs spécifiques. Pour les exports de vues et de listes, vous pouvez inclure les champs suivants dans votre requête : | Paramètre | Description | | - | - | | `exportType` | Le type d'export, soit `VIEW` (exporte une vue depuis une page index d'objet), soit `LIST` (exporte une liste). | | `format` | Le format du fichier. Les options sont : `XLSX`, `CSV` ou `XLS`. | | `exportName` | Le nom de l'export. | | `language` | La langue du fichier d'export. Les options sont : `DE`, `EN`, `ES`, `FI`, `FR`, `IT`, `JA`, `NL`, `PL`, `PT` ou `SV`. En savoir plus sur [les langues prises en charge.](https://knowledge.hubspot.com/fr/help-and-resources/hubspot-language-offerings) | | `objectType` | Le nom ou l'ID de l'objet que vous exportez. Pour les objets standards, vous pouvez utiliser le nom de l'objet (par ex : `CONTACT`), mais pour les objets personnalisés, vous devez utiliser la valeur `objectTypeId`. Vous pouvez récupérer cette valeur en faisant une requête `GET` à `/crm/v3/schemas`. | | `associatedObjectType` | Les noms ou ID des objets associés à inclure dans l'export. Vous pouvez exporter jusqu'à quatre objets associés par requête. Pour les objets associés, l'export contiendra les ID de fiche d'informations associés à cet objet. Si vous n'exportez qu'un seul objet associé ou si vous définissez le champ `includePrimaryDisplayPropertyForAssociatedObjects` sur `true`, les valeurs des propriétés d'affichage primaire des fiches seront également exportées (par exemple, `name` pour les entreprises). | | `objectProperties` | Une liste des propriétés que vous voulez inclure dans votre export. Par défaut, les noms et les valeurs des propriétés sont affichés comme des libellés lisibles, mais vous pouvez demander des noms et des valeurs internes en utilisant le paramètre `exportInternalValuesOptions`. | | `includePrimaryDisplayPropertyForAssociatedObjects` | Ajoutez ce champ avec la valeur `true` pour exporter les valeurs de la propriété d'affichage principale pour toutes les fiches d'informations associées (par exemple, `name` pour les entreprises). Si vous n'exportez qu'un seul objet associé (indiqué par le champ `associatedObjectType`), la valeur par défaut est `true`. Si vous exportez plus d'un objet associé, la valeur est définie par défaut sur `false`. | | `includeLabeledAssociations` | Ajoutez ce champ avec la valeur `true` pour exporter des [libellés d'association](https://developers.hubspot.fr/docs/api-reference/latest/crm/associations/associate-records/guide#create-and-manage-association-types) décrivant la relation entre les fiches d'informations associées. | | `exportInternalValuesOptions` | Ajoutez ce tableau pour exporter les valeurs internes des noms de propriétés et/ou des valeurs de propriétés. Dans le tableau, ajoutez `NAMES` pour exporter les noms internes des propriétés (affichés en tant qu'en-têtes de colonne) et/ou `VALUES` pour exporter les valeurs propriété internes (par exemple, des valeurs numériques pour les étapes de pipeline personnalisées ou des horodatages au lieu de dates lisibles). | | `overrideAssociatedObjectsPerDefinitionPerRowLimit` | Incluez ce champ avec la valeur `true` pour remplacer la [limite](https://developers.hubspot.fr/docsguides/api/crm/exports#limits) par défaut de 1 000 associations par ligne. | ### Exporter une vue Si vous exportez une [vue de page d'index](https://knowledge.hubspot.com/fr/records/view-and-filter-records), votre valeur `exportType` doit être `VIEW`, et vous pouvez inclure le champ suivant pour filtrer et trier les fiches d'informations que vous exportez : | Paramètre | Description | | - | - | | `publicCrmSearchRequest` | Indique quelles données doivent être exportées en fonction de certaines valeurs de propriétés et requêtes de recherche. Vous pouvez inclure les éléments suivants dans l'objet : `filters` : les propriétés et les valeurs de propriété selon lesquelles filtrer les fiches d'informations. `sorts` : l'ordre de tri des valeurs d'une propriété, croissant, `ASC` ou décroissant, `DES`. `query` : une chaîne pour rechercher les valeurs des fiches d'informations. | Par exemple, pour exporter une vue des contacts et des fiches d'informations d'entreprise associées, filtrée par la propriété `email` et avec les valeurs internes des noms et valeurs des propriétés, votre requête peut ressembler à ce qui suit : **JSON** ```json theme={null} ///Example request body { "exportType": "VIEW", "exportName": "All contacts", "format": "xlsx", "language": "DE", "objectType": "CONTACT", "exportInternalValuesOptions": ["NAMES", "VALUES"], "objectProperties": ["email", "firstname", "lastname"], "associatedObjectType": "COMPANY", "publicCrmSearchRequest": { "filters": [ { "value": "hello@test.com", "propertyName": "email", "operator": "EQ" } ], "query": "hello", "sorts": [ { "propertyName": "email", "order": "ASC" } ] } } ``` ### Exporter une liste Si vous exportez une [liste](https://knowledge.hubspot.com/fr/segments/create-active-or-static-lists), votre valeur `exportType` doit être `LIST`, mais vous devez également indiquer la liste que vous exportez avec le champ suivant : | Paramètre | Description | | - | - | | `listId` | L'[ID de liste ILS](https://knowledge.hubspot.com/fr/segments/troubleshoot-lists#ils-list) de la liste à exporter. Vous pouvez trouver la valeur de l'ID de liste ILS via les détails de la liste dans HubSpot. Accédez à **Contacts** > **Listes**, survolez la **liste** dans le tableau, puis cliquez sur **Détails**. Dans le panneau de droite, cliquez sur **Copier** **l'ID de liste** à côté de la valeur ID de liste ILS. Les listes de contacts ont deux valeurs d'ID différentes, mais vous devez utiliser la valeur d'ID de liste ILS dans votre requête. | Par exemple, pour exporter une liste contenant les adresses e-mail des contacts, votre requête peut ressembler à ce qui suit : **JSON** ```json theme={null} ///Example request body { "exportType": "LIST", "listId": 1234567, "exportName": "Marketing email contacts", "format": "xlsx", "language": "EN", "objectType": "CONTACT", "objectProperties": ["email"] } ``` ## Récupérer les exports Lorsque vous terminez un export, l'`id` de l'export sera renvoyé dans la réponse. Pour récupérer un export depuis votre compte HubSpot, effectuez une requête `GET` à `/crm/v3/exports/export/async/tasks/{exportId}/status`. Lors de la récupération des exports, le `status` de l'export sera également renvoyé. Les statuts possibles sont : `COMPLETE`, `PENDING`, `PROCESSING` ou `CANCELED`. Pour les exports avec un statut `COMPLETE`, une URL est renvoyée que vous pouvez utiliser pour télécharger le fichier exporté. L'URL de téléchargement expirera cinq minutes après la fin de la requête. Une fois expirée, vous pouvez effectuer une autre requête `GET` pour générer une nouvelle URL unique. > [!WARNING] > > ### Remarque : > > Avant l'expiration, l'URL de téléchargement de l'export est accessible sans autorisation supplémentaire. Pour protéger vos données, procédez avec prudence lorsque vous partagez une URL ou effectuez une intégration avec HubSpot via cette API. ## Limites d'utilisation Les limites suivantes s'appliquent : * Vous pouvez effectuer jusqu'à trente exports dans une fenêtre de 24 heures consécutives, et un export à la fois. Les exports supplémentaires seront mis en file d'attente jusqu'à ce que l'export précédent soit terminé. * Si vous effectuez un export volumineux, vous pouvez recevoir plusieurs fichiers livrés dans un fichier zip. Cela se produira pour les fichiers CSV ou XLSX de plus de 1 000 000 lignes et de fichiers XLS de plus de 65 535 lignes. Les fichiers CSV sont également automatiquement compressés si la taille du fichier est supérieure à 2 Mo, même s'il contient moins de 1 000 000 de lignes. * Par défaut, le nombre d'associations par ligne est limité à 1 000. Si vous souhaitez dépasser cette limite, incluez le `overrideAssociatedObjectsPerDefinitionPerRowLimit` champ contenant la valeur `true`. # Calling extensions SDK Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/calling-sdk # Create new channel connection settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/channel-connection-settings/create-channel-connection-settings specs/2026-09/crm-calling-extensions-v2026-09.json POST /crm/extensions/calling/2026-09/{appId}/settings/channel-connection Establish new channel connection settings for the specified app. > **Supported products** # Remove the channel connection settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/channel-connection-settings/delete-channel-connection-settings specs/2026-09/crm-calling-extensions-v2026-09.json DELETE /crm/extensions/calling/2026-09/{appId}/settings/channel-connection Delete the channel connection settings associated with the specified app. > **Supported products** # Retrieve the channel connection settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/channel-connection-settings/get-channel-connection-settings specs/2026-09/crm-calling-extensions-v2026-09.json GET /crm/extensions/calling/2026-09/{appId}/settings/channel-connection Access the current channel connection settings for the specified app. > **Supported products** # Update the channel connection settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/channel-connection-settings/update-channel-connection-settings specs/2026-09/crm-calling-extensions-v2026-09.json PATCH /crm/extensions/calling/2026-09/{appId}/settings/channel-connection Modify the existing channel connection settings for the specified app. > **Supported products** # Submit details of an inbound call to the CRM. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/inbound/create-inbound-call specs/2026-09/crm-calling-extensions-v2026-09.json POST /crm/extensions/calling/2026-09/inbound-call This endpoint allows you to submit information about an inbound call to the CRM system. The request must include details such as the external call ID, call status, and involved phone numbers. This operation helps in logging and managing inbound call data within the CRM. > **Supported products** > **Required Scopes** # CRM API | Receive calls in HubSpot when using calling apps Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/receive-incoming-calls # Mark a call recording as ready for retrieval. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/recording/call-recording-ready specs/2026-09/crm-calling-extensions-v2026-09.json POST /crm/extensions/calling/2026-09/recordings/ready This endpoint is used to mark a call recording as ready. It requires the engagementId to identify the specific recording. > **Supported products** > **Required Scopes** # Call recordings and transcripts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/recordings-and-transcriptions # Create new calling extension settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/settings/create-calling-extension specs/2026-09/crm-calling-extensions-v2026-09.json POST /crm/extensions/calling/2026-09/{appId}/settings Create new settings for the calling extension associated with the specified appId. > **Supported products** # Delete the calling extension settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/settings/delete-calling-extension specs/2026-09/crm-calling-extensions-v2026-09.json DELETE /crm/extensions/calling/2026-09/{appId}/settings Remove the calling extension settings associated with the specified appId. This action cannot be undone. > **Supported products** # Retrieve the calling extension settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/settings/get-calling-extensions specs/2026-09/crm-calling-extensions-v2026-09.json GET /crm/extensions/calling/2026-09/{appId}/settings Retrieve the current settings of the calling extension for the specified appId. > **Supported products** # Update the calling extension settings for a specific app. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/settings/update-calling-extension specs/2026-09/crm-calling-extensions-v2026-09.json PATCH /crm/extensions/calling/2026-09/{appId}/settings Modify existing calling extension settings for the specified appId. Only the fields provided in the request will be updated. > **Supported products** # Set up third-party calling in help desk Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/third-party-calling # Third-party transcripts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/calling-extensions/third-party-transcripts # Create a new card Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/create-crm-card specs/2026-09/crm-public-app-crm-cards-v2026-09.json POST /crm/extensions/cards-dev/2026-09/{appId} Définit une nouvelle carte qui deviendra active sur un compte lorsque cette application est installée. > **Supported products** # Delete a card Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/delete-crm-card specs/2026-09/crm-public-app-crm-cards-v2026-09.json DELETE /crm/extensions/cards-dev/2026-09/{appId}/{cardId} Supprime définitivement une définition de carte avec l'identifiant donné. Une fois supprimée, les demandes de récupération de données pour cette carte ne seront plus envoyées à votre service. Cette action est irréversible. > **Supported products** # Get a card. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/get-crm-card specs/2026-09/crm-public-app-crm-cards-v2026-09.json GET /crm/extensions/cards-dev/2026-09/{appId}/{cardId} Renvoie la définition d'une carte avec l'ID donné. > **Supported products** # Get all cards Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/get-crm-cards specs/2026-09/crm-public-app-crm-cards-v2026-09.json GET /crm/extensions/cards-dev/2026-09/{appId} Renvoie une liste de cartes pour une application donnée. > **Supported products** # Get sample card detail response Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/get-sample-response specs/2026-09/crm-public-app-crm-cards-v2026-09.json GET /crm/extensions/cards-dev/2026-09/sample-response Renvoie un exemple de réponse de détail de carte. Il s'agit de la charge utile avec les détails affichés pour une carte qui sera montrée à un utilisateur. Une application doit envoyer cela en réponse à la demande de récupération des données. > **Supported products** # API de CRM | cartes CRM Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/guide Ces points de terminaison permettent aux utilisateurs HubSpot d'interagir avec les informations stockées dans d'autres systèmes. > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-b4ebfe97-5852-4a5d-a9be-d171474df3b1)** Dans une application [publique](/docs/apps/legacy-apps/public-apps/overview), vous pouvez créer des cartes CRM personnalisées pour afficher des informations provenant d'autres systèmes sur les fiches d'informations de contacts, d'entreprises, de transactions et de tickets HubSpot. Chaque application peut inclure jusqu'à 25 cartes CRM. > [!NOTE] > > À compter du 16 juin 2025, les fonctionnalités des cartes CRM classiques décrites dans cet article ne seront plus prises en charge et seront officiellement obsolètes le 31 octobre 2026. Découvrez-en davantage sur cette annonce dans le [journal des modifications des développeurs HubSpot](https://community.hubspot.com/t5/Developer-Announcements/Deprecating-Support-for-Classic-Legacy-CRM-Cards/m-p/1153039#M1048). > > Les cartes CRM classiques sont différentes des cartes d’application que vous pouvez [créer en tant qu’extensions d’interface utilisateur avec des projets](https://developers.hubspot.fr/docs/guides/crm/ui-extensions/create). Les nouvelles cartes d'application offrent plus de flexibilité, de personnalisation et d'interactivité en utilisant un ensemble d'outils plus modernes, basés sur React. Si votre application comprend actuellement une carte CRM classique, découvrez comment la [migrer vers le cadre de projets](/docs/apps/developer-platform/build-apps/overview) afin d'utiliser des cartes d'application plus récentes. **Exemple de cas d'utilisation :** vous créez une intégration pour le marketplace des applications pour votre logiciel de suivi des bogues. Vous voulez faire apparaître les bugs suivis sur les fiches d'informations de contacts afin que les conseillers du support puissent les référencer lorsque vous travaillez avec les clients. Votre application peut définir une carte personnalisée qui affiche ces informations sur la fiche d'informations de contact HubSpot. ![CRM\_Card\_1](https://cdn2.hubspot.net/hubfs/53/CRM_Card_1.png) Les cartes peuvent être définies dans les paramètres de fonctionnalité de votre application. Une fois que l'application est installée et qu'un utilisateur consulte les fiches d'informations du CRM cibles, HubSpot effectue une requête sortante à l'application, récupère les données pertinentes et les affiche dans une carte sur la page de la fiche d'informations. Les applications peuvent également spécifier des actions personnalisées que l'utilisateur peut effectuer en fonction de ces informations. Par exemple, votre application peut inclure une action qui ouvre une fenêtre glissante pour afficher sa propre interface utilisateur dans HubSpot. ![crm-card-data-flow-chart](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/crm-card-diagram.png) ## Exigences des domaines Pour créer des cartes CRM personnalisées, votre application doit demander les domaines OAuth requis pour modifier les fiches d'informations de CRM dans lesquelles votre carte apparaîtra. Par exemple, pour qu'une carte CRM apparaisse sur les fiches d'informations de contacts, l'application doit avoir les paramètres `crm.objects.contacts.read` et `crm.objects.contacts.write`. Si vous devez supprimer ultérieurement les paramètres d'objets CRM de votre application, vous devrez d'abord supprimer toutes les cartes existantes pour ces types d'objets. Consultez la documentation OAuth pour [plus de détails sur les domaines](/docs/apps/legacy-apps/authentication/working-with-oauth) et la configuration de l'URL d'autorisation pour votre application. ## Créer une carte CRM Vous pouvez créer des cartes CRM pour votre application via l'API ou en modifiant votre application dans votre compte de développeur. Pour en savoir plus sur la configuration d'une carte via l'API, consultez la [documentation de référence](/docs/api-reference/crm-public-app-crm-cards-v3/guide). Pour créer une carte CRM à l'aide de l'interface utilisateur de HubSpot : * Dans votre compte de développeur de HubSpot, accédez à **Apps** dans la navigation principale. * Sélectionnez l'**application** à laquelle vous souhaitez ajouter une carte. * Dans le menu latéral de gauche, sélectionnez **Cartes CRM**. * Cliquez sur **Créer une carte CRM** dans l'angle supérieur droit. ![private-app-create-crm-card](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/private-app-create-crm-card.png) Découvrez ci-dessous les options de configuration dans chaque onglet. > [!NOTE] > > Les extensions d'interface utilisateur construites à l'aide de projets de développement offrent des moyens plus flexibles d'afficher des données et permettent l'interaction de l'utilisateur, y compris l'affichage de contenu externe dans des cadres. Si l'utilisation d'une application privée est possible pour votre intégration, consultez le [guide de démarrage rapide des extensions d'interface utilisateur](/docs/apps/developer-platform/build-apps/overview) pour commencer, ou [consultez les exemples de projets HubSpot](https://developers.hubspot.fr/docs/guides/crm/ui-extensions/sample-extensions/overview) pour voir des exemples de ce qui est possible. ## Demande de données Lorsqu'un utilisateur HubSpot affiche une fiche d'informations CRM dans laquelle la carte CRM est activée, HubSpot formulera une requête de récupération de données à l'intégration. Cette requête est faite à l'URL cible spécifiée, qui comprend un ensemble de paramètres de requête par défaut, ainsi que des paramètres supplémentaires contenant des données de propriété telles que spécifiées dans les paramètres de la carte. ![private-app-create-crm-card-data-request-tab](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/private-app-create-crm-card-data-request-tab.png) * Dans le champ *URL de récupération des données*, saisissez l'**URL** à partir de laquelle vous allez récupérer les données. Dans l'API, cette URL est ajoutée au champ `targetUrl`. * Dans la section *Types de fiches d'informations cibles*, cliquez pour activer les **options** afin de sélectionner les fiches d'informations CRM dans lesquelles la carte apparaîtra. Ensuite, utilisez les menus déroulants **Propriétés envoyées par HubSpot** pour sélectionner les **propriétés HubSpot** qui seront incluses en tant que paramètres de requête dans l'URL de la requête. Dans l'API, chaque type de fiche d'informations et ses propriétés correspondantes sont ajoutés en tant qu'objets dans le tableau `objectTypes`. ```json theme={null} { "title": "New CRM Card", "fetch": { "targetUrl": "https://www.example.com/demo-fetch", "objectTypes": [ { "name": "contacts", "propertiesToSend": [ "firstname", "email", "lastname" ] } ] } ... } ``` ### Exemple de requête La configuration ci-dessus entraînerait l'envoi par HubSpot de sa requête `GET` comme suit. ```shell theme={null} https://www.example.com/demo-fetch?userId=12345&userEmail=loggedinuser@hubspot.com&associatedObjectId=53701&associatedObjectType=CONTACT&portalId=987654&firstname=Tim&email=timrobinson@itysl.com&lastname=Robinson ``` | Paramètre | Type | Description | | - | - | - | | `userId` | Défaut | L'ID de l'utilisateur HubSpot qui a chargé la fiche d'informations CRM. | | `userEmail` | Défaut | L'adresse e-mail de l'utilisateur qui a chargé la fiche d'informations CRM. | | `associatedObjectId` | Défaut | L'ID de la fiche d'informations CRM qui a été chargée. | | `associatedObjectType` | Défaut | Le type de fiche d'informations CRM qui a été chargée (par exemple, contact, entreprise, transaction). | | `portalId` | Défaut | L'ID du compte HubSpot dans lequel la fiche d'informations CRM a été chargée. | | `firstname` | Personnalisé | Le prénom du contact, tel que spécifié dans le menu déroulant *Propriétés envoyées par HubSpot* (dans l'application) et le tableau `propertiesToSend` (API). | | `email` | Personnalisé | L'adresse e-mail du contact, tel que spécifié dans le menu déroulant *Propriétés envoyées par HubSpot* (dans l'application) et le tableau `propertiesToSend` (API). | | `lastname` | Personnalisé | Le nom de famille du contact, tel que spécifié dans le menu déroulant *Propriétés envoyées par HubSpot* (dans l'application) et le tableau `propertiesToSend` (API). | > [!WARNING] > > ### Remarque : > > Une connexion doit être établie dans les 3 secondes et les requêtes expireront au bout de 5 secondes. ### Exemple de réponse Vous trouverez ci-dessous un exemple de réponse que l'intégrateur pourrait fournir à la requête ci-dessus. ```json theme={null} { "results": [ { "objectId": 245, "title": "API-22: APIs working too fast", "link": "http://example.com/1", "created": "2016-09-15", "priority": "HIGH", "project": "API", "description": "Customer reported that the APIs are just running too fast. This is causing a problem in that they're so happy.", "reporter_type": "Account Manager", "status": "In Progress", "ticket_type": "Bug", "updated": "2016-09-28", "actions": [ { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/edit-iframe-contents", "label": "Edit", "associatedObjectProperties": [] }, { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/reassign-iframe-contents", "label": "Reassign", "associatedObjectProperties": [] }, { "type": "ACTION_HOOK", "httpMethod": "PUT", "associatedObjectProperties": [], "uri": "https://example.com/tickets/245/resolve", "label": "Resolve" }, { "type": "CONFIRMATION_ACTION_HOOK", "confirmationMessage": "Are you sure you want to delete this ticket?", "confirmButtonText": "Yes", "cancelButtonText": "No", "httpMethod": "DELETE", "associatedObjectProperties": ["protected_account"], "uri": "https://example.com/tickets/245", "label": "Delete" } ] }, { "objectId": 988, "title": "API-54: Question about bulk APIs", "link": "http://example.com/2", "created": "2016-08-04", "priority": "HIGH", "project": "API", "reported_by": "ksmith@hubspot.com", "description": "Customer is not able to find documentation about our bulk Contacts APIs.", "reporter_type": "Support Rep", "status": "Resolved", "ticket_type": "Bug", "updated": "2016-09-23", "properties": [ { "label": "Resolved by", "dataType": "EMAIL", "value": "ijones@hubspot.com" }, { "label": "Resolution type", "dataType": "STRING", "value": "Referred to documentation" }, { "label": "Resolution impact", "dataType": "CURRENCY", "value": "94.34", "currencyCode": "GBP" } ], "actions": [ { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/edit-iframe-contents", "label": "Edit" }, { "type": "CONFIRMATION_ACTION_HOOK", "confirmationMessage": "Are you sure you want to delete this ticket?", "confirmButtonText": "Yes", "cancelButtonText": "No", "httpMethod": "DELETE", "associatedObjectProperties": ["protected_account"], "uri": "https://example.com/tickets/245", "label": "Delete" } ] } ], "settingsAction": { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/settings-iframe-contents", "label": "Settings" }, "primaryAction": { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/create-iframe-contents", "label": "Create Ticket" } } ``` | Propriété | Type | Description | | - | - | - | | `results` | Tableau | Un tableau comprenant jusqu'à 5 [propriétés de carte](#card-properties) valides. Si plusieurs propriétés de carte sont disponibles pour un objet de CRM spécifique, votre application peut rediriger vers celles-ci. | | `objectId` | Nombre | Un ID unique pour cet objet. | | `title` | Chaîne | Le titre de cet objet. | | `link` | Chaîne | L'URL que l'utilisateur peut suivre pour obtenir plus de détails sur l'objet. Cette propriété est facultative, mais si aucun objet n'a de lien, vous devez fournir une valeur `null`. | | `created` | Chaîne | Une [propriété personnalisée](#card-properties), telle que définie dans les paramètres de la carte, qui indique la date de création de l'objet. | | `priority` | Chaîne | Une [propriété personnalisée](#card-properties), telle que définie dans les paramètres de la carte, qui indique le niveau de priorité du ticket externe. | | `actions` | Tableau | Une liste des [actions](#action-types) disponibles qu'un utilisateur peut effectuer pour cet objet. | | `properties` | Propriétés | Une liste des propriétés personnalisées qui ne sont pas définies dans les paramètres de la carte. Vous pouvez utiliser cette liste pour afficher les propriétés uniques d'un objet spécifique. Ces propriétés seront affichées dans l'ordre dans lequel elles sont fournies, mais après les propriétés définies dans les paramètres de la carte. | | `settingsAction` | Objet | Une action d'iframe qui permet aux utilisateurs de mettre à jour les paramètres de l'application. | | `primaryAction` | Objet | L'action principale pour un type de fiche d'informations, généralement une action de création. | | `secondaryActions` | Tableau | Une liste d'actions affichées sur la carte. | ### Signatures de requête Pour s'assurer que les requêtes proviennent bien de HubSpot, l'en-tête de requête suivant est inclus. Cet en-tête contiendra un hachage du secret de l'application pour votre application ainsi que les détails de la requête. `X-HubSpot-Signature: ` Pour vérifier cette signature, effectuez les étapes suivantes : 1. Créez une chaîne qui regroupe les éléments suivants : `` + `` + `` + ` (if present)`. 2. Créez un hachage SHA-256 de la chaîne résultante. 3. Comparer la valeur de hachage à la signature. Si elle est égale, la requête a été validée. Si elle ne correspond pas, cette requête peut avoir été modifiée en transit ou quelqu'un peut usurper les requêtes à votre point de terminaison. Découvrez-en davantage sur la [validation des requêtes de HubSpot](/docs/apps/legacy-apps/authentication/validating-requests). ## Propriétés de la carte Dans l'onglet *Propriétés de la carte*, définissez toutes les propriétés personnalisées que vous souhaitez que HubSpot affiche sur la carte CRM. Une fois définie, l'intégration peut remplir ces propriétés en les incluant dans sa réponse. * Cliquez sur **Ajouter une propriété** pour ajouter une nouvelle propriété à afficher sur la carte. La charge utile que vous fournissez en réponse à l'appel d'extraction de données doit contenir des valeurs pour toutes ces propriétés. * Dans le panneau de droite, définissez le nom unique, le libellé d'affichage et le type de données de la propriété. Vous pouvez choisir parmi les types suivants : *Devise*, *Date*, *Datetime*, *E-mail*, *Lien*, *Numérique*, *Statut* et *Chaîne*. Découvrez-en davantage sur [l'utilisation des types de propriétés d'extension](/docs/apps/legacy-apps/extensions/overview). * Cliquez sur **Ajouter** pour enregistrer la propriété. ![private-app-create-crm-card-card-properties-tab](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/private-app-create-crm-card-card-properties-tab.png) Lorsque HubSpot envoie sa requête de données, l'intégration peut fournir des valeurs pour ces propriétés dans sa réponse ainsi que d'autres valeurs dans chaque objet dans la propriété `results`. Outre les propriétés configurées dans cet onglet, l'intégration peut également inclure ses propres propriétés personnalisées sans avoir besoin de les définir dans les paramètres de la carte. Par exemple, dans la réponse ci-dessous, les paramètres `created` et `priority` sont tous deux définis dans l'onglet *Propriétés de la carte*, tandis que le tableau `properties` envoie ses propres définitions et valeurs de propriétés. Ces propriétés spécifiques à l'objet doivent être définies par objet. ```json theme={null} { "objectId": 988, "title": "API-54: Question about bulk APIs", "link": "http://example.com/2", "created": "2016-08-04", "priority": "HIGH", "properties": [ { "label": "Resolved by", "dataType": "EMAIL", "value": "ijones@hubspot.com" }, { "label": "Resolution type", "dataType": "STRING", "value": "Referred to documentation" }, { "label": "Resolution impact", "dataType": "CURRENCY", "value": "94.34", "currencyCode": "GBP" } ], "actions": [ ... ] } ``` Lors de l'envoi de propriétés personnalisées, le champ `dataType` de chaque propriété peut être défini sur l'un des éléments suivants : `CURRENCY`, `DATE`, `DATETIME`, `EMAIL`, `LINK`, `NUMERIC`, `STATUS`, `STRING`. Selon le type de propriété, l'intégration peut devoir fournir des champs supplémentaires. Découvrez-en davantage ci-dessous sur chaque type de propriété. ### Propriétés de devise Les propriétés `CURRENCY` doivent inclure un paramètre `currencyCode`, qui doit être un code [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) valide. Cela garantira que l'utilisateur voit le symbole de devise et la mise en forme des chiffres corrects. ```json theme={null} { "results": [ { "properties": [ { "label": "Resolution impact", "dataType": "CURRENCY", "value": "94.34", "currencyCode": "GBP" } ] } ] } ``` ### Propriétés de date Les propriétés `DATE` doivent être au format `aaaa-mm-jj`. Ces propriétés seront affichées dans un format correspondant aux paramètres régionaux de l'utilisateur. Si vous devez inclure un horodatage, vous devez plutôt utiliser une propriété `DATETIME`. ```json theme={null} { "results": [ { "properties": [ { "label": "Date", "dataType": "DATE", "value": "2023-10-13" } ] } ] } ``` ### Propriétés datetime Les propriétés `DATETIME` indiquent une heure spécifique et doivent être fournies au format epoch en millisecondes. Ces propriétés seront affichées dans un format correspondant aux paramètres régionaux de l'utilisateur. ```json theme={null} { "results": [ { "properties": [ { "label": "Timestamp", "dataType": "DATETIME", "value": "1697233678777" } ] } ] } ``` ### Propriétés d'e-mail Les propriétés `EMAIL` sont utilisées pour les valeurs qui contiennent une adresse e-mail. Ces propriétés s'affichent comme des liens mailto. ```json theme={null} { "results": [ { "properties": [ { "label": "Email address", "dataType": "EMAIL", "value": "hobbes.baron@gmail.com" } ] } ] } ``` ### Propriétés de lien Les propriétés `LINK` affichent des liens hypertextes et s'ouvrent dans une nouvelle fenêtre. Vous pouvez spécifier un `linkLabel`, sinon l'URL elle-même sera affichée. ```json theme={null} { "results": [ { "properties": [ { "label": "Link property", "dataType": "LINK", "value": "https://www.hubspot.com", "linkLabel": "Test link" } ] } ] } ``` ### Propriétés numériques Les propriétés `NUMERIC` affichent des chiffres. ```json theme={null} { "results": [ { "properties": [ { "label": "Number", "dataType": "NUMERIC", "value": "123.45" } ] } ] } ``` ### Propriétés de statut Les propriétés `STATUS` s'affichent comme des indicateurs colorés. Pour définir une propriété de statut, l'intégration doit fournir un `optionType` qui décrit les statuts possibles. Les statuts sont les suivants * `DEFAULT` : Gris * `SUCCESS` : Vert * `WARNING` : Jaune * `DANGER` : Rouge * `INFO` : Bleu ```json theme={null} { "results": [ { "properties": [ { "label": "Status", "dataType": "STATUS", "value": "Errors occurring", "optionType": "DANGER" } ] } ] } ``` ### Propriétés de chaîne Les propriétés `STRING` affichent du texte. ```json theme={null} { "results": [ { "properties": [ { "label": "First name", "dataType": "STRING", "value": "Tim Robinson" } ] } ] } ``` ## Actions personnalisées Dans l'onglet *Actions personnalisées*, vous pouvez définir les URL de base qui seront demandées lorsqu'un utilisateur clique sur un bouton d'action. Vous pouvez inclure plusieurs URL d'action pour diverses actions dans votre carte CRM. Les actions de carte doivent appeler un point de terminaison spécifié dans cet onglet. ![Private-app-create-crm-card-custom-actions-tab](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/private-app-create-crm-card-custom-actions-tab.png) Les hooks d'action et les requêtes de hooks de confirmation incluront un en-tête `X-HubSpot-Signature` pour vérifier la requête. Les requêtes d'action iframe n'incluront pas de signature de requête. Consultez les [signatures de requête](#request-signatures) pour plus d'informations. Les URL d'action sont accessibles dans le champ `uri` d'une action. À l'instar de la [requête de récupération de données](#data-request), les hooks d'action incluront un ensemble par défaut de paramètres de requête. Vous pouvez inclure d'autres paramètres de requête en incluant un champ `associatedObjectProperties` dans l'action. La réponse variera en fonction du type d'action. Découvrez-en davantage ci-dessous sur les types d'actions. ### Types d'actions #### Actions iframe Les actions `IFRAME` ouvrent une fenêtre modale contenant un iframe pointant sur l'URL fournie. Aucune signature de requête n'est envoyée lorsque l'iframe est ouvert à partir de l'interface utilisateur CRM. En effet, l'URL de l'iframe est renvoyée dans la requête de récupération de données d'origine et aucune autre requête de proxy n'est nécessaire. ```json theme={null} { "type": "IFRAME", "width": 890, "height": 748, "uri": "https://example.com/iframe-contents", "label": "Edit", "associatedObjectProperties": ["some_crm_property"] } ``` Lorsque l'utilisateur a terminé une action dans l'iframe, la fenêtre modale doit se fermer et rediriger l'utilisateur vers la fiche d'informations du CRM à partir de laquelle il a commencé. Pour fermer la fenêtre modale, l'intégration peut utiliser `window.postMessage` pour signaler au CRM que l'utilisateur a terminé. Les messages suivants sont acceptés : * `{"action": "DONE"}` : l'utilisateur a correctement finalisé l'action. * `{"action": "CANCEL"}` : l'utilisateur a annulé l'action. ```json theme={null} window.parent.postMessage(JSON.stringify({"action": "DONE"}), "*"); ``` #### Actions de hook d'action Les actions `ACTION_HOOK` envoient une requête côté serveur à l'intégrateur. La seule interface utilisateur qu'un utilisateur voit pour cette action est un message de réussite ou d'erreur. Ce type d'action est utile pour des opérations simples qui ne nécessitent pas d'entrée supplémentaire de la part de l'utilisateur. Un en-tête `X-HubSpot-Signature` sera inclus dans la requête de vérification. En savoir plus sur les [signatures de requête](#request-signatures). ```json theme={null} { "type": "ACTION_HOOK", "httpMethod": "POST", "uri": "https://example.com/action-hook", "label": "Example action", "associatedObjectProperties": ["some_crm_property"] } ``` La propriété `httpMethod` peut être définie sur `GET`, `POST`, `PUT`, `DELETE` ou `PATCH`. Si vous utilisez la propriété `GET` ou `DELETE`, les valeurs `associatedObjectProperties` seront ajoutées à l'URL de la requête en tant que paramètres de requête. Dans le cas contraire, les propriétés seront envoyées dans le corps de la requête. ```json theme={null} window.parent.postMessage(JSON.stringify({"action": "DONE"}), "*"); ``` #### Actions de confirmation Les actions `CONFIRMATION_ACTION_HOOK` ont un comportement identique à celui des actions `ACTION_HOOK`, à l'exception d'une boîte de dialogue de confirmation affichée pour l'utilisateur avant l'exécution de la requête côté serveur. Un en-tête `X-HubSpot-Signature` sera inclus dans la requête de vérification. En savoir plus sur les [signatures de requête](#request-signatures). ```json theme={null} { "type": "CONFIRMATION_ACTION_HOOK", "httpMethod": "POST", "uri": "https://example.com/action-hook", "label": "Example action", "associatedObjectProperties": ["some_crm_property"], "confirmationMessage": "Are you sure you want to run example action?", "confirmButtonText": "Yes", "cancelButtonText": "No" } ``` La propriété `httpMethod` peut être définie sur `GET`, `POST`, `PUT`, `DELETE` ou `PATCH`. Si vous utilisez la propriété `GET` ou `DELETE`, les valeurs `associatedObjectProperties` seront ajoutées à l'URL de la requête en tant que paramètres de requête. Dans le cas contraire, les propriétés seront envoyées dans le corps de la requête. ## Supprimer une carte CRM Une fois créée, vous pouvez supprimer une carte CRM à partir des paramètres de l'application : * Dans votre compte de développeur de HubSpot, accédez à **Apps** dans la navigation principale. * Cliquez sur le **nom** de l'application dont vous souhaitez supprimer une carte. * Dans le menu latéral de gauche, sélectionnez **Cartes CRM**. * Passez le curseur de la souris sur la carte, puis cliquez sur **Supprimer**. ![delete-a-classic-crm-card-from-within-app-settings](https://www.hubspot.fr/hubfs/Knowledge_Base_2023-24-25/public-app-delete-crm-card.png) * Dans la boîte de dialogue, confirmez la suppression en cliquant sur **Supprimer cette carte**. # Migrate CRM card views Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/migrate-crm-card specs/2026-09/crm-public-app-crm-cards-v2026-09.json POST /crm/extensions/cards-dev/2026-09/{appId}/views/migrate Échange une carte CRM existante contre une carte d'application dans les vues. Consultez la documentation « Migrer une carte CRM existante vers une carte d'application » pour plus d'informations > **Supported products** # Update a card Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/crm-cards/update-crm-card specs/2026-09/crm-public-app-crm-cards-v2026-09.json PATCH /crm/extensions/cards-dev/2026-09/{appId}/{cardId} Mettez à jour une définition de carte avec de nouveaux détails. > **Supported products** # Create a transcript Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/transcriptions/create-transcript specs/2026-09/crm-transcriptions-v2026-09.json POST /crm/extensions/calling/2026-09/transcripts Créez une nouvelle transcription pour un appel dans votre compte HubSpot. Ce point de terminaison vous permet de soumettre les détails d'une transcription d'appel, y compris l'ID d'engagement et les énoncés, afin qu'ils soient stockés et gérés dans HubSpot. Ceci est utile pour intégrer les données de transcription d'appel dans vos workflows CRM. > **Supported products** > **Required Scopes** # Delete a transcript Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/transcriptions/delete-transcript specs/2026-09/crm-transcriptions-v2026-09.json DELETE /crm/extensions/calling/2026-09/transcripts/{transcriptId} Supprimer la transcription d'un appel spécifique de votre compte HubSpot à l'aide de son identifiant unique. Cette opération est utile pour gérer et nettoyer les données de transcription qui ne sont plus nécessaires. > **Supported products** > **Required Scopes** # Retrieve a transcript Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/transcriptions/get-transcript specs/2026-09/crm-transcriptions-v2026-09.json GET /crm/extensions/calling/2026-09/transcripts/{transcriptId} Récupérer la transcription d'un appel spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux détails d'une transcription, y compris ses horodatages de création et de mise à jour, l'ID d'engagement, la source et les énoncés de la transcription. Il est utile pour examiner et analyser les interactions d'appel stockées dans votre compte HubSpot. > **Supported products** > **Required Scopes** # Transcribe inbound call Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/transcriptions/transcribe-inbound specs/2026-09/crm-transcriptions-v2026-09.json POST /crm/extensions/calling/2026-09/inbound-call Ce point de terminaison traite les appels entrants en acceptant une requête contenant les détails de l'appel. Il nécessite une charge utile JSON incluant des informations telles que l'ID externe de l'appel, son statut final et les numéros de téléphone impliqués. Cette opération est utile pour intégrer des données d'appel tierces dans HubSpot, permettant un suivi et une gestion fluides des appels entrants. > **Supported products** > **Required Scopes** # Get settings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/video-conferencing-extension/get-video-conferencing-extension specs/2026-09/crm-video-conferencing-extension-v2026-09.json GET /crm/extensions/videoconferencing/2026-09/settings/{appId} Récupérez les paramètres d'extension de vidéoconférence pour votre application > **Supported products** # Extension de vidéoconférence Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/video-conferencing-extension/guide Ces points de terminaison sont utilisés pour se connecter au flux de création des réunions dans HubSpot et ajouter des informations de vidéoconférence. > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-8f5582df-b553-403f-b001-6fe4cbafe4e4)** # Extension de vidéoconférence À l’aide de l’API de vidéoconférence, vous pouvez configurer une [application publique](/docs/apps/legacy-apps/public-apps/overview) pour donner aux utilisateurs HubSpot la possibilité d’ajouter un lien de vidéoconférence lors de [la création d’une réunion](https://knowledge.hubspot.com/meetings-tool/create-and-edit-scheduling-pages#overview), similaire à l’intégration [Google Meet](https://knowledge.hubspot.com/integrations/use-hubspots-integration-with-google-meet) et [Zoom](https://knowledge.hubspot.com/integrations/use-hubspots-integration-with-zoom). L'utilisation de cette API comprend les étapes suivantes : 1. Configuration de votre application publique avec des webhooks d’extension de vidéoconférence. Vous fournirez des URI que HubSpot utilisera pour vous informer lorsque les clients créent, mettent à jour ou suppriment des réunions. 2. Configuration d'un back-end personnalisé pour gérer la création de réunions et la mise à jour des webhooks. 3. Si nécessaire, configuration de votre back-end pour gérer les webhooks de vérification d’identité des utilisateurs. Toutes les demandes à l’API de vidéoconférence doivent être authentifiées à l’aide de la clé d’API développeur de votre compte de développeur. Vous pouvez inclure la clé dans un paramètre de requête `hapikey` à la fin de l’URL de la requête. Vous [trouverez votre clé d’API de développeur](/docs/apps/legacy-apps/public-apps/overview#developer-api-keys) dans votre compte développeur. ## Conditions préalables Avant de commencer, assurez-vous d’avoir créé un [compte de développeur](/docs/getting-started/account-types#developer-accounts) et une [application publique](/docs/apps/legacy-apps/public-apps/overview) dans celui-ci. ## Configurer les URL de webhook Pour que HubSpot sache où envoyer des notifications lorsque des réunions sont créées, mises à jour ou supprimées, vous devez tout d’abord configurer les URL de webhook de l’extension. Pour ce faire, effectuez une demande `PUT` à `/crm/v3/extensions/videoconferencing/settings/{appId}?hapikey=YOUR_HUBSPOT_DEVELOPER_API_KEY`. Dans le corps de la demande, vous devrez inclure le champ `createMeetingUrl` pour définir l’URL que HubSpot enverra aux charges utiles du webhook de création de réunions. Vous pouvez éventuellement inclure des URL de webhook supplémentaires. Ces valeurs peuvent être mises à jour ultérieurement avec la même URL de requête. ```json theme={null} // Example request { "createMeetingUrl": "https://example.com/create-meeting", "updateMeetingUrl": "https://example.com/update-meeting", "deleteMeetingUrl": "https://example.com/delete-meeting" } ``` | Champ | Type | Description | | - | - | - | | `createMeetingUrl` | Obligatoire | L’URL que HubSpot notifiera lorsqu’une nouvelle réunion sera créée. Il s’agira notamment d’une charge utile JSON contenant les détails de la réunion. L’URL doit utiliser le protocole `https`. | | `updateMeetingUrl` | Chaîne | L’URL que HubSpot notifiera quand une réunion existante sera mise à jour. Cela inclura une charge utile JSON avec les détails de la réunion mis à jour. L’URL doit utiliser le protocole `https`. | | `deleteMeetingUrl` | Chaîne | L’URL que HubSpot notifiera quand une réunion existante sera supprimée. Cela inclura une `conferenceId` des réunions supprimées. L’URL doit utiliser le protocole `https`. | | `userVerifyUrl` | Chaîne | L'URL que HubSpot utilisera pour vérifier que l'utilisateur existe dans le système de visioconférence externe. | **Exemple de réponse :** ```json theme={null} // Example 200 response { "createMeetingUrl": "https://example.com/create-meeting", "updateMeetingUrl": "https://example.com/update-meeting", "deleteMeetingUrl": "https://example.com/delete-meeting" } ``` ### Récupérer les URL de webhook Pour récupérer les URL de webhook configurées pour une application existante, effectuez une demande `GET` à `/crm/v3/extensions/videoconferencing/settings/{appId}`. La réponse comprendra les URL de webhook actuellement configurées. ```json theme={null} // Example 200 response { "createMeetingUrl": "https://example.com/create-meeting", "updateMeetingUrl": "https://example.com/update- meeting", "deleteMeetingUrl": "https://example.com/delete-meeting", "userVerifyUrl": "https://example.com/user-verify" } ``` ## Charges utiles de webhook Une fois les URL de webhook configurées, HubSpot enverra des charges utiles à ces URL lorsqu’un événement de création, de mise à jour ou de suppression de réunion se produira. > [!NOTE] > > Tous les webhooks envoyés par HubSpot sont signés en HMAC avec le secret de votre application. Vous pouvez en savoir plus à ce sujet dans la [documentation sur la sécurité des webhooks](/docs/api-reference/webhooks-webhooks-v3/guide#security) (le reste de la page ne s’applique pas à ces webhooks d’extension de vidéoconférence). ### Créer un webhook de réunion Lorsqu'une réunion est créée, HubSpot enverra une demande l'URL indiquée dans le champ `createMeetingUrl`. La charge utile de la demande comprend des informations sur le compte HubSpot, l’utilisateur HubSpot associé et les détails de la réunion. ```json theme={null} // Example payload { "portalId": 123123, "userId": 123, "userEmail": "test.user@example.com", "topic": "A Test Meeting", "source": "MEETINGS", "startTime": 1534197600000, "endTime": 1534201200000 } ``` | Champ | Type | Description | | - | - | - | | `portalId` | Nombre | L’ID du compte HubSpot d’où provient la demande. | | `userId` | Nombre | L’ID de l’utilisateur HubSpot auquel la réunion est attribuée. | | `userEmail` | Chaîne | L’adresse e-mail de l’utilisateur HubSpot attribuée à la réunion. | | `topic` | Chaîne | Le titre de la réunion. | | `source` | Chaîne | Permet d'indiquer l’endroit où la réunion a été créée. Peut être soit :
          • `MEETINGS` : la réunion a été créée à partir d’une [page de planification de réunions](https://knowledge.hubspot.com/meetings-tool/create-and-edit-scheduling-pages#create-scheduling-pages).
          • `MANUAL` : la réunion a été créée manuellement à partir d’une fiche d’informations du CRM.
          | | `startTime` | Nombre | L'heure de début de la réunion (en millisecondes epoch). | | `endTime` | Nombre | L'heure de fin de la réunion (en millisecondes epoch). | Pour gérer ce webhook, vous devez générer une vidéoconférence pour cette réunion (ou le lien vers une ligne de conférence existante) et répondre avec des informations concernant cette conférence. Les champs indiqués dans la réponse sont les suivants : * `conferenceId` : un identifiant unique associé à la conférence sur cet événement. Cet ID doit être globalement unique dans votre système. HubSpot renverra cet ID dans le webhook de mise à jour. * `conferenceUrl:` l’URL que les utilisateurs peuvent utiliser pour rejoindre la conférence. * `conferenceDetails` : des informations d'invitation en texte brut. Elles doivent décrire l'accès des participants à l'événement à la vidéoconférence pour cet événement. Les nouvelles lignes seront conservées dans les représentations de ce texte, mais aucune autre mise en forme n’est prise en charge. Par exemple, votre réponse pourrait ressembler à ce qui suit : ```json theme={null} //example response { "conferenceId": "some-unique-id", "conferenceUrl": "https://example.com/join", "conferenceDetails": "Click here to join: https://example.com/join" } ``` ### Mettre à jour le webhook de réunion Si vous avez défini une valeur `updateMeetingUrl`, HubSpot enverra à cet URI une demande en cas de modification de détails pertinents de la réunion. Cette notification est nécessaire si vous devez mettre à jour le sujet ou les heures d'une vidéoconférence. La charge utile de la demande comprend des informations sur le compte HubSpot, l’utilisateur HubSpot associé et les détails de la réunion. ```json theme={null} //example request { "conferenceId": "some-unique-id", "userId": 123, "userEmail": "test.user@example.com", "portalId": 123123, "topic": "A Test Meeting (updated)", "startTime": 1534197600000, "endTime": 1534201200000 } ``` | Champ | Type | Description | | - | - | - | | `conferenceId` | Chaîne | L'identifiant unique de la conférence fournie par votre intégration dans la réponse au webhook de création de réunion. | | `userId` | Nombre | L’ID de l’utilisateur HubSpot auquel la réunion est attribuée. Il s’agira toujours du même utilisateur que celui figurant dans la charge utile de création de réunion. | | `userEmail` | Chaîne | L’adresse e-mail de l’utilisateur HubSpot attribuée à la réunion. Il s’agira toujours du même utilisateur que celui figurant dans la charge utile de création de réunion. | | `portalId` | Nombre | L’ID du compte HubSpot d’où provient la demande. | | `topic` | Chaîne | Le titre de la réunion. | | `startTime` | Nombre | L'heure de début de la réunion (en millisecondes epoch). | | `endTime` | Nombre | L'heure de fin de la réunion (en millisecondes epoch). | Aucun corps de réponse n'est requis lors de la réponse à ces demandes. Seul un code de réponse `200` ou `204` est requis pour que HubSpot sache que ce webhook a bien été reçu. ### Supprimer le webhook de réunion Lorsqu’une réunion est supprimée dans HubSpot, une demande sera envoyée à l’URL spécifiée dans le champ `deleteMeetingUrl`. La charge utile comprendra le `conferenceId` de la réunion supprimée. ```json theme={null} // Example payload { "conferenceId": "some-unique-id" } ``` Aucun corps de réponse n'est requis lors de la réponse à ces demandes. Seul un code de réponse `200` ou `204` est requis pour que HubSpot sache que ce webhook a bien été reçu. ### Webhook de vérification de l’utilisateur Les systèmes HubSpot communiqueront toujours avec vous sur les utilisateurs concernant leurs ID d'utilisateur HubSpot et leurs adresses e-mail de compte HubSpot. Il est possible qu'un utilisateur dans le système HubSpot existe dans votre système avec une adresse e-mail ou un identifiant différent. Avant de passer un appel à votre système pour créer, mettre à jour ou supprimer un lien de vidéoconférence, HubSpot vérifiera d’abord les paramètres de l’application pour un champ `userVerifyUrl`. Si cette URL a été définie, HubSpot l’appellera pour récupérer votre identifiant d’utilisateur natif. Il enverra ensuite cet identifiant en tant qu'adresse e-mail de l'utilisateur lors de l'appel suivant. Si vous ne configurez pas cette URL, HubSpot supposera que l'identité de l'utilisateur est vérifiée. Ce paramètre est facultatif et vous pouvez déterminer s’il est nécessaire. Si vous devez mettre à jour un mappage d'utilisateur dans votre système, vous pouvez simplement mapper l'ID d'utilisateur ou l'adresse e-mail à votre ID d'utilisateur interne sur chaque appel. La charge utile pour ce webhook contient l’ID du compte HubSpot et l’adresse e-mail de l’utilisateur. ```json theme={null} //example request { "portalId": 123123, "userEmail": "test.user@example.com" } ``` Vous pouvez renvoyer une réponse `200` ou tout autre code d'erreur (`404` serait approprié). Si vous renvoyez une erreur `200`, vous devriez renvoyer une charge utile contenant le nouvel ID que nous utilisons au lieu de l'adresse e-mail : ```json theme={null} //example response { "id": "any-string-id" } ``` # Create or update settings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/video-conferencing-extension/update-video-conferencing-extension specs/2026-09/crm-video-conferencing-extension-v2026-09.json PUT /crm/extensions/videoconferencing/2026-09/settings/{appId} Créer ou mettre à jour les paramètres d'extension de vidéoconférence pour votre application > **Supported products** # Delete settings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/extensions/video-conferencing-extension/delete-video-conferencing-extension specs/2026-09/crm-video-conferencing-extension-v2026-09.json DELETE /crm/extensions/videoconferencing/2026-09/settings/{appId} Supprimer les paramètres d'extension de vidéoconférence pour votre application > **Supported products** # Cancel an active import Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/cancel-import specs/2026-09/crm-imports-v2026-09.json POST /crm/imports/2026-09/{importId}/cancel Cela permet à un développeur d'annuler une importation active. > **Supported products** > **Required Scopes** # Start an import Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/create-import specs/2026-09/crm-imports-v2026-09.json POST /crm/imports/2026-09 Créer un nouvel import dans votre compte HubSpot en téléchargeant des fichiers et en spécifiant les paramètres d'import. Ce point de terminaison vous permet d'initier le processus d'import en fournissant les fichiers et les détails de configuration nécessaires. > **Supported products** > **Required Scopes** # Get the information on any import Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/get-import specs/2026-09/crm-imports-v2026-09.json GET /crm/imports/2026-09/{importId} Un résumé complet d'un enregistrement d'importation, y compris toutes mises à jour. > **Supported products** > **Required Scopes** # Retrieve errors for a specific import Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/get-import-errors specs/2026-09/crm-imports-v2026-09.json GET /crm/imports/2026-09/{importId}/errors Récupère les fiches d'informations d'erreurs détaillées pour une opération d'import spécifique, ce qui vous permet d'identifier et de corriger les problèmes liés aux fiches d'informations qui ont échoué pendant le traitement. > **Supported products** > **Required Scopes** # Retrieve imports Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/get-imports specs/2026-09/crm-imports-v2026-09.json GET /crm/imports/2026-09 Récupérer une liste d'imports dans votre compte HubSpot. Ce point de terminaison vous permet de consulter les imports qui ont été traités, en fournissant des détails sur chaque import. Il prend en charge la pagination pour naviguer à travers de grands ensembles de données d'import. > **Supported products** > **Required Scopes** # API du CRM | Imports Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/imports/guide Les imports sont utilisés pour remplir un compte HubSpot avec des données d'objets qui peuvent être utilisées avec les outils de vente, de marketing et de service client. > **[Run in Postman](https://app.getpostman.com/run-collection/f30b00bcfdc29170b2e8)** > **Exigences de portée** # Imports Utilisez l'API d'import pour importer des fiches d'informations et des activités du CRM dans votre compte HubSpot, comme des contacts, des entreprises et des notes. Une fois l'import terminé, vous pouvez accéder aux fiches d'informations et aux activités et les mettre à jour via les différents points de terminaison de l'API du CRM, y compris l'[API des contacts](/docs/guides/crm/understanding-the-crm), l'[API des associations](/docs/api-reference/crm-associations-v4/guide) et les [API des engagements.](/docs/api-reference/overview) Vous pouvez également [importer des fiches d'informations et des activités à l'aide de l'outil d'import guidé dans HubSpot](https://knowledge.hubspot.com/fr/import-and-export/import-objects). Avant de commencer l'import, découvrez-en davantage sur : * [Conditions des fichiers](https://knowledge.hubspot.com/fr/import-and-export/set-up-your-import-file#file-requirements-and-technical-limits) * [Les propriétés requises pour les imports de fiches d'informations et d'activités](https://knowledge.hubspot.com/fr/import-and-export/set-up-your-import-file#required-properties) * [Les propriétés requises pour les importations de participants à des événements marketing](https://knowledge.hubspot.com/fr/integrations/import-marketing-event-participants#prepare-your-import-file) > [!WARNING] > > ### Remarque : > > Pour créer des événements personnalisés ou associer des événements à des fiches d'informations, utilisez l'[API d'événements personnalisés](https://developers.hubspot.fr/docs/api-reference/events-send-event-completions-v3/guide) au lieu d'importer. ## Démarrer un import Vous pouvez commencer un import en effectuant une requête `POST` à `/crm/v3/imports` avec un corps de requête qui spécifie comment mapper les colonnes de votre fichier d'import aux propriétés associées dans HubSpot. Les imports d'API sont envoyés sous forme de requêtes de données de formulaire, le corps de la requête contenant les champs suivants : * [importRequest](#format-the-importrequest-data) : un champ de texte qui contient le JSON de requête. * [files](#map-file-columns-to-hubspot-properties) : un champ de fichier qui contient le fichier d'import. Pour l'en-tête de requête, ajoutez un en-tête `Content-Type` avec une valeur `multipart/form-data`. La capture d'écran ci-dessous illustre ce à quoi pourrait ressembler votre requête lorsque vous utilisez une application telle que Postman : ![postman-import-request-no-response0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/postman-import-request-no-response0.png) ### Formater les données importRequest Dans votre requête, définissez les détails du fichier d'import, y compris le mappage des colonnes de la feuille de calcul avec les données HubSpot. Votre requête doit inclure les champs suivants : * **name** : nom de l'import. Dans HubSpot, il s'agit du nom [affiché dans l'outil d'import](https://knowledge.hubspot.com/fr/import-and-export/view-and-analyze-previous-imports) ainsi que du nom que vous pouvez mentionner dans d'autres outils, tels que des listes. * **importOperations** : un champ facultatif utilisé pour indiquer si l'import doit [créer et mettre à jour, uniquement créer ou uniquement mettre à jour des fiches d'informations](https://knowledge.hubspot.com/fr/import-and-export/import-objects#choose-how-to-import) pour un objet ou une activité donné. Incluez l'élément `objectTypeId` pour l'objet/l'activité et si vous souhaitez `UPSERT` (créer et mettre à jour), `CREATE` ou `UPDATE` des fiches d'informations. Par exemple, le champ ressemblerait à ceci dans votre requête : `"importOperations": {"0-1": "CREATE"}`. Si vous n'incluez pas ce champ, la valeur par défaut utilisée pour l'import sera `UPSERT`. * **dateFormat** : le format des dates incluses dans le fichier. Par défaut, cette valeur est définie sur `MONTH_DAY_YEAR`, mais vous pouvez également utiliser `DAY_MONTH_YEAR` ou `YEAR_MONTH_DAY`. * **marketableContactImport** : un champ facultatif pour indiquer le [statut marketing](https://knowledge.hubspot.com/fr/records/marketing-contacts) des contacts dans votre fichier d'import. Ceci est utilisé uniquement lors de l'import de contacts dans des comptes qui ont [accès aux contacts marketing](https://knowledge.hubspot.com/fr/records/marketing-contacts#check-your-access-to-marketing-contacts). Pour définir les contacts dans le fichier comme marketing, utilisez la valeur `true`. Pour définir les contacts dans le fichier comme non marketing, utilisez la valeur `false`. * **createContactListFromImport** : un champ facultatif pour [créer une liste statique de contacts](https://knowledge.hubspot.com/fr/import-and-export/import-objects#create-list-from-import) à partir de votre import. Pour créer une liste à partir de votre fichier, utilisez la valeur `true`. * **files** : un tableau qui contient des informations sur votre fichier d'import. * **fileName** : le nom du fichier d'import. * **fileFormat** : le format du fichier d'import. Pour les fichiers CSV, utilisez la valeur `CSV`. Pour les fichiers Excel, utilisez la valeur `SPREADSHEET`. * **fileImportPage** : contient le tableau `columnMappings` requis pour mapper les données de votre fichier d'import aux données HubSpot. Découvrez-en davantage sur le mappage des colonnes ci-dessous. ### Mapper des colonnes de fichiers à des propriétés HubSpot Dans le tableau `columnMappings`, incluez une entrée pour chaque colonne de votre fichier d'import, en respectant l'ordre des en-têtes de colonnes de votre feuille de calcul. Pour chaque colonne, ajoutez les champs suivants : * **columnObjectTypeId :** le nom ou la valeur `objectTypeId` de l'objet ou de l'activité auquel/à laquelle les données appartiennent. Consultez [cet article](/docs/guides/crm/understanding-the-crm#object-type-id) pour une liste complète des valeurs `objectTypeId`. * **columnName** : le nom de l'en-tête de colonne. Il doit correspondre exactement au nom de l'en-tête de colonne dans le fichier. * **propertyName** : le nom interne de la HubSpot vers laquelle les données seront mappées. Pour la colonne commune dans [les imports multi-fichiers](#import-multiple-files), `propertyName` doit être `null` lorsque le champ `toColumnObjectTypeId` est utilisé. * **columnType** : utilisé pour spécifier qu'une colonne contient une [propriété d'identifiant unique](https://knowledge.hubspot.com/fr/import-and-export/understand-the-import-tool#unique-identifiers). En fonction de la propriété et de l'objectif de l'import, utilisez l'une des valeurs suivantes : * **HUBSPOT\_OBJECT\_ID** : l'identifiant d'une fiche d'informations. Par exemple, votre fichier d'import de contacts peut contenir un *ID de fiche d'informations* qui stocke l'ID de l'entreprise à laquelle vous souhaitez associer les contacts. * **HUBSPOT\_ALTERNATE\_ID** : un identifiant unique autre que l'ID de fiche d'informations. Par exemple, votre fichier d'import de contacts peut contenir une colonne *Adresse e-mail* qui stocke les adresses e-mail des contacts. * **FLEXIBLE\_ASSOCIATION\_LABEL** : incluez ce type de colonne pour indiquer que la colonne contient des libellés d'associations. * **ASSOCIATION\_KEYS** : pour les imports d'associations d'objets identiques uniquement, incluez ce type de colonne pour l'identifiant unique des mêmes fiches d'informations d'objets que vous associez. Par exemple, dans votre requête d'import d'associations de contacts, la colonne *\[ID de fiche d'informations/adresse e-mail]* du contact associé doit avoir un élément `columnType` de `ASSOCIATION_KEYS`. Découvrez-en davantage sur [la configuration de votre fichier d'import pour l'import d'associations d'objets identiques](https://knowledge.hubspot.com/fr/import-and-export/set-up-your-import-file#same-object-association-imports). * **toColumnObjectTypeId** : pour les imports de [plusieurs fichiers](#import-multiple-files) ou objets, le nom ou `objectTypeId` de l'objet auquel appartient la propriété de [colonne commune](https://knowledge.hubspot.com/fr/import-and-export/set-up-your-import-file#import-associations-in-two-files) ou le libellé d'association. Incluez ce champ pour la propriété de colonne commune dans le fichier de l'objet auquel la propriété n'appartient pas. Par exemple, si vous associez des contacts et des entreprises dans deux fichiers avec la propriété de contact *Adresse e-mail* comme colonne commune, incluez `toColumnObjectTypeId` pour la colonne *Adresse e-mail* dans le fichier de l'entreprise. * **foreignKeyType** : pour les [imports multi-fichiers](#import-multiple-files) uniquement, le type d'association que la colonne commune doit utiliser, spécifié par `associationTypeId` et `associationCategory`. Incluez ce champ pour la propriété de colonne commune dans le fichier de l'objet auquel la propriété n'appartient pas. Par exemple, si vous associez des contacts et des entreprises dans deux fichiers avec la propriété de contact *Adresse e-mail* comme colonne commune, incluez `foreignKeyType` pour la colonne *Adresse e-mail* dans le fichier de l'entreprise. * **associationIdentifierColumn** : pour les [imports multi-fichiers](#import-multiple-files) uniquement, indique la propriété utilisée dans la colonne commune pour associer les fiches d'informations. Incluez ce champ pour la propriété de colonne commune dans le fichier de l'objet auquel la propriété appartient. Par exemple, si vous associez des contacts et des entreprises dans deux fichiers avec la propriété de contact *Adresse e-mail* comme colonne commune, définissez `associationIdentifierColumn` sur `true` pour la colonne *E-mail dans le* fichier de contact. ## Importer un fichier avec un objet Voici un exemple de corps de requête pour l'import d'un fichier pour créer des contacts : ```json example.json theme={null} // Example POST to https://api.hubspot.com/crm/v3/imports // Content-Type header set to multipart/form-data { "name": "November Marketing Event Leads", "importOperations": { "0-1": "CREATE" }, "dateFormat": "DAY_MONTH_YEAR", "files": [ { "fileName": "Nov-event-leads.csv", "fileFormat": "CSV", "fileImportPage": { "hasHeader": true, "columnMappings": [ { "columnObjectTypeId": "0-1", "columnName": "First Name", "propertyName": "firstname" }, { "columnObjectTypeId": "0-1", "columnName": "Last Name", "propertyName": "lastname" }, { "columnObjectTypeId": "0-1", "columnName": "Email", "propertyName": "email", "columnType": "HUBSPOT_ALTERNATE_ID" } ] } } ] } ``` ```python example.py theme={null} # This example a local file named 'test_import.csv' # This file contains a list of contact records to import. import requests import json import os url = "https://api.hubapi.com/crm/v3/imports" YOUR_ACCESS_TOKEN = 'xxxxxxx'; # Content-Type header will be set automatically by the requests library headers = { 'authorization': 'Bearer %s' % YOUR_ACCESS_TOKEN } data = { "name": "November Marketing Event Leads", "importOperations": { "0-1": "CREATE" }, "dateFormat": "DAY_MONTH_YEAR", "files": [ { "fileName": "Nov-event-leads.csv", "fileFormat": "CSV", "fileImportPage": { "hasHeader": True, "columnMappings": [ { "columnObjectTypeId": "0-1", "columnName": "First Name", "propertyName": "firstname" }, { "columnObjectTypeId": "0-1", "columnName": "Last Name", "propertyName": "lastname" }, { "columnObjectTypeId": "0-1", "columnName": "Email", "propertyName": "email", "columnType": "HUBSPOT_ALTERNATE_ID" } ] } } ] } datastring = json.dumps(data) payload = {"importRequest": datastring} current_dir = os.path.dirname(__file__) relative_path = "./test_import.csv" absolute_file_path = os.path.join(current_dir, relative_path) files = [ ('files', open(absolute_file_path, 'rb')) ] print(files) response = requests.request("POST", url, data=payload, files=files, headers=headers) print(response.text.encode('utf8')) print(response.status_code) ``` ```bash example.sh theme={null} # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request: # importing a file named import_file.csv # create a variable for the importRequest JSON myJSON=$(cat < [!WARNING] > > ### Remarque : > > Lors de la récupération des imports, la réponse inclura uniquement les imports effectués par la même application. Les imports effectués dans HubSpot ou via une autre application ne seront pas renvoyés. ## Annuler l'import Pour annuler un import actif, effectuez une requête `POST` à `/crm/v3/imports/{importId}/cancel`. ## Afficher et résoudre les erreurs d'import Pour afficher les erreurs pour un import spécifique, faites une requête `GET` à `/crm/v3/imports/{importId}/errors`. Découvrez comment résoudre [les erreurs d'import les plus courantes](https://knowledge.hubspot.com/fr/import-and-export/troubleshoot-import-errors). Pour les erreurs telles que *Nombre de colonnes incorrect,* *Impossible d'analyser le JSON* ou *Le texte/HTML 404 n'est pas accepté* : * Vérifiez qu'il existe un en-tête de colonne pour chaque colonne de votre fichier et que le corps de la requête contient une entrée `columnMapping` pour chaque colonne. Les critères suivants doivent être remplis : * L'ordre des colonnes dans le corps de la requête et le fichier d'import doit correspondre. Si l'ordre des colonnes ne correspond pas, le système tentera de réorganiser automatiquement mais échouera, ce qui entraînera une erreur au démarrage de l'import. * Chaque colonne doit être mappée. Si aucune colonne n'est mappée, la requête d'import peut quand même aboutir, mais entraînera l'erreur *Nombre de colonnes incorrect* au démarrage de l'import. * Assurez-vous que le nom du fichier et le champ `fileName` de votre JSON de requête correspondent et que vous avez inclus l'extension de fichier dans le champ `fileName`. Par exemple : *import\_name.csv.* * Vérifiez que votre en-tête comprend `Content-Type` avec une valeur `multipart/form-data`. ```json example.json theme={null} Example POST URL: https://api.hubapi.com/crm/v3/imports? Example importRequest JSON data: This example contains 3 columns: - First name, mapped to the firstname contact property - Email, mapped to the email contact property - Company ID, which contains a list of company record IDs that the contact will be assocated with. { "name": "test_import", "files": [ { "fileName": "final_emails.csv", "fileImportPage": { "hasHeader": true, "columnMappings": [ { "ignored": false, "columnName": "First Name", "idColumnType": null, "propertyName": "firstname", "foreignKeyType": null, "columnObjectType": "CONTACT", "associationIdentifierColumn": false }, { "ignored": false, "columnName": "Email", "idColumnType": "HUBSPOT_ALTERNATE_ID", "propertyName": "email", "foreignKeyType": null, "columnObjectType": "CONTACT", "associationIdentifierColumn": false }, { "ignored": false, "columnName": "Company ID", "idColumnType": "HUBSPOT_OBJECT_ID", "propertyName": null, "foreignKeyType": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 1 }, "columnObjectType": "CONTACT", "associationIdentifierColumn": false } ] } } ] } ``` ```python example.py theme={null} # This example a local file named 'final_emails.csv' # This file contains a list of contact records to import. # Each row in the file contains a column named "Company ID" that contains the companyId # that the contact should be associated with. import requests import json post_url = 'http://api.hubapi.com/crm/v3/imports?hapikey=4324...5432' importRequest = { "name": "test_import", "files": [ { "fileName": "final_emails.csv", "fileImportPage": { "hasHeader": True, "columnMappings": [ { "ignored": False, "columnName": "First Name", "idColumnType": None, "propertyName": "firstname", "foreignKeyType": None, "columnObjectType": "CONTACT", "associationIdentifierColumn": False }, { "ignored": False, "columnName": "Email", "idColumnType": "HUBSPOT_ALTERNATE_ID", "propertyName": "email", "foreignKeyType": None, "columnObjectType": "CONTACT", "associationIdentifierColumn": False }, { "ignored": False, "columnName": "Company ID", "idColumnType": "HUBSPOT_OBJECT_ID", "propertyName": None, "foreignKeyType": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 1 }, "columnObjectType": "CONTACT", "associationIdentifierColumn": False } ] } } ] ``` ```php example.php theme={null} $csv_file, "importRequest" => $config_json ); $ch = curl_init(); @curl_setopt($ch, CURLOPT_POST, true); @curl_setopt($ch, CURLOPT_URL, $post_url); @curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $response = @curl_exec($ch); //Log the response from HubSpot as needed. $status_code = @curl_getinfo($ch, CURLINFO_HTTP_CODE); //Log the response status code @curl_close($ch); echo $status_code . " " . $response; ?> ``` ```bash example.sh theme={null} # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request: # importing a file named import_file.csv # create a variable for the importRequest JSON myJSON=$(cat < [!WARNING] > > ### Remarque : > > Si vous recevez une erreur, vérifiez s'il y a des en-têtes en double, tels que `Content-Type`. Cela peut se produire si vous utilisez Postman ou s'il est inclus dans l'en-tête de votre script Python. Supprimez le doublon avant de terminer la requête. ## Limites d'utilisation Lorsque vous utilisez l'API d'import, vous pouvez importer jusqu'à 80 millions de lignes par jour. Cependant, un fichier d'import est limité à 1 048 576 lignes ou 512 Mo, selon la première éventualité. Si votre requête dépasse la limite de lignes ou la taille maximale, HubSpot renverra une erreur HTTP 429. Lorsque vous approchez de ces limites, il est recommandé de diviser votre import en plusieurs requêtes. # Read calculation property limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-calculated-properties specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/calculated-properties Renvoie la limite globale et l'utilisation par objet pour les propriétés calculées > **Supported products** > **Required Scopes** # Read custom object limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-custom-object-types specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/custom-object-types Renvoie les limites et l'utilisation des schémas d'objets personnalisés > **Supported products** > **Required Scopes** # Read custom property limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-custom-properties specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/custom-properties Renvoie les limites et l'utilisation par objet des propriétés personnalisées > **Supported products** > **Required Scopes** # Read record association limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-from specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/associations/records/from Renvoie les objets dont les fiches d'informations sont proches des limites de l'association ou les atteignent > **Supported products** > **Required Scopes** # Read association label limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-limits-tracking specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/associations/labels Renvoie les limites et l'utilisation des libellés d'association personnalisés > **Supported products** > **Required Scopes** # Read record association limits from an object Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-limits-tracking-fromObjectTypeId specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/associations/records/{fromObjectTypeId}/to Renvoie les objets pour lesquels l'objet de départ possède des fiches d'informations qui sont proches des limites de l'association ou les atteignent > **Supported products** > **Required Scopes** # Read record association limits between two objects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-limits-tracking-toObjectTypeId specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/associations/records/{fromObjectTypeId}/{toObjectTypeId} Renvoie les fiches d'informations qui sont proches des limites de l'association ou les atteignent entre 2 objets > **Supported products** > **Required Scopes** # Read pipeline limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-pipelines specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/pipelines Renvoie les limites et l'utilisation par objet pour les pipelines > **Supported products** > **Required Scopes** # Read record limits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/get-records specs/2026-09/crm-limits-tracking-v2026-09.json GET /crm/limits/2026-09/records Renvoie les limites et l'utilisation par objet pour les fiches d'informations > **Supported products** > **Required Scopes** # Limits Tracking API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/limits-tracking/guide # Create List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/create-list specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09 Créer une nouvelle liste dans votre compte HubSpot en utilisant les paramètres spécifiés. Ce point de terminaison vous permet de définir les propriétés et les critères de la liste, qui peut être utilisée pour organiser et gérer les contacts ou d’autres objets CRM. > **Supported products** > **Required Scopes** # Delete Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/delete-list specs/2026-09/crm-lists-v2026-09.json DELETE /crm/lists/2026-09/{listId} Supprimer une liste spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Cette opération supprimera définitivement la liste et ses données associées, garantissant qu'elle ne sera plus accessible. > **Supported products** > **Required Scopes** # Segment (list) filters overview Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/filters/guide # Update list filters Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/filters/update-list-filters specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/update-list-filters Mettre à jour les filtres d'une liste spécifique dans votre compte HubSpot. Cette opération vous permet de modifier les critères utilisés pour inclure des objets dans la liste. Vous pouvez également spécifier si les objets doivent être inscrits dans des workflows en fonction des filtres mis à jour. > **Supported products** > **Required Scopes** # List all Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/get-all-lists specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09/all Récupérer toutes les listes du système CRM. Ce point de terminaison vous permet de récupérer une liste complète de toutes les listes disponibles, ce qui peut être utile pour gérer et organiser efficacement vos données CRM. > **Supported products** > **Required Scopes** # Retrieve List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/get-list specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/object-type-id/{objectTypeId}/name/{listName} Récupérer une liste spécifique par son nom et l'ID de son type d'objet dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux détails d'une liste, ce qui peut être utile pour gérer et analyser vos données CRM. Vous pouvez également choisir d'inclure des filtres dans la réponse. > **Supported products** > **Required Scopes** # Retrieve segment size and edits history Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/get-list-history specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/{listId}/size-and-edits-history/between Récupérer la taille et l'historique des modifications d'une liste spécifique sur une période définie. Ce point de terminaison est utile pour suivre les changements et comprendre l'évolution de sa taille au fil du temps. > **Supported products** > **Required Scopes** # Retrieve list Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/get-list-listId specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/{listId} Récupérer les détails d'une liste spécifique dans votre compte HubSpot à l'aide de son identifiant unique. Ce point de terminaison vous permet d'inclure, en option, les filtres associés à la liste dans la réponse. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/get-lists specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09 Récupérez une liste de listes CRM dans votre compte HubSpot. Ce point de terminaison vous permet de filtrer les listes par leurs identifiants et d'inclure éventuellement les filtres appliqués aux listes. Il est utile pour gérer et organiser vos données CRM en accédant à des listes spécifiques. > **Supported products** > **Required Scopes** # Segments API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/guide # Retrieve ID Mapping Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/id-mapping/translate-id specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/idmapping Récupérer le mappage des ID de listes héritées vers leurs ID actuels dans le système HubSpot. Ce point de terminaison est utile pour migrer ou mettre à jour des systèmes qui reposent sur des identifiants de listes héritées. > **Supported products** > **Required Scopes** # Map IDs Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/id-mapping/translate-id-batch specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09/idmapping Mapper les ID de listes héritées à leurs nouveaux ID correspondants dans le système HubSpot. Ce point de terminaison est utile pour migrer des données d’anciens systèmes vers la structure HubSpot actuelle, garantissant que toutes les références de listes sont mises à jour correctement. > **Supported products** > **Required Scopes** # Cancel the conversion of a segment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/cancel-conversion specs/2026-09/crm-lists-v2026-09.json DELETE /crm/lists/2026-09/{listId}/schedule-conversion Supprimer une conversion planifiée pour une liste spécifique dans votre compte HubSpot. Cette opération est utile lorsque vous devez annuler une conversion précédemment planifiée pour une liste identifiée par son listId. > **Supported products** > **Required Scopes** # Create Folder Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/create-folder specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09/folders Créer un nouveau dossier dans les listes CRM de votre compte HubSpot. Cette opération vous permet d’organiser vos listes en dossiers pour une meilleure gestion et accessibilité. > **Supported products** > **Required Scopes** # Delete folder Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/delete-folder specs/2026-09/crm-lists-v2026-09.json DELETE /crm/lists/2026-09/folders/{folderId} Supprimer un dossier spécifique dans les listes CRM en fournissant l'identifiant unique du dossier. Cette opération est utile pour supprimer les dossiers qui ne sont plus nécessaires ou pour nettoyer la structure des dossiers dans vos listes CRM. > **Supported products** > **Required Scopes** # Retrieve the conversion details for a segment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/get-conversion-details specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/{listId}/schedule-conversion Récupérer les détails de conversion planifiée pour une liste spécifique dans votre compte HubSpot. Ce point de terminaison fournit des informations sur toutes les conversions planifiées pour la liste spécifiée, vous permettant de gérer et de suivre efficacement les conversions de liste. > **Supported products** > **Required Scopes** # List folders Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/get-folder specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/folders Récupérer une liste de dossiers au sein des listes CRM. Ce point de terminaison peut être utilisé pour naviguer dans la structure des dossiers en spécifiant un ID de dossier. Il est utile pour organiser et gérer les listes au sein des dossiers. > **Supported products** > **Required Scopes** # Move Folder Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/move-folder specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/folders/{folderId}/move/{newParentFolderId} Déplacer un dossier vers un nouveau dossier parent au sein des listes CRM. Cette opération est utile pour réorganiser la structure de vos dossiers en modifiant le dossier parent d'un dossier spécifié. > **Supported products** > **Required Scopes** # Move List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/move-list-to-folder specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/folders/move-list Déplacer une liste vers un autre dossier au sein de votre compte HubSpot. Cette opération nécessite de spécifier la liste et le dossier cible. Elle est utile pour organiser les listes en différentes catégories ou structures. > **Supported products** > **Required Scopes** # Rename folder Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/rename-folder specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/folders/{folderId}/rename Renommer un dossier existant dans les listes CRM en spécifiant l'ID du dossier et le nouveau nom souhaité. Cela peut être utile pour organiser et mettre à jour les structures de dossiers au sein de votre compte. > **Supported products** > **Required Scopes** # Schedule or update the conversion of a segment to static Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/list-management/schedule-conversion specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/schedule-conversion Planifiez une conversion pour une liste spécifique dans votre compte HubSpot. Cette opération vous permet de définir une heure de conversion pour la liste identifiée par l'id de liste. Utilisez ce point de terminaison pour gérer efficacement le calendrier de conversion de vos listes. > **Supported products** > **Required Scopes** # Add memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/add-to-list specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/memberships/add Ajoutez des contrôles d'accès à une liste spécifiée dans votre compte HubSpot. Ce point de terminaison vous permet d'ajouter plusieurs contrôles d'accès à une liste identifiée par son listId. Il est utile pour gérer les contrôles d'accès à des listes en masse, en garantissant que les fiches d'informations spécifiées sont incluses dans la liste. > **Supported products** > **Required Scopes** # Add memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/add-to-list-from-source-list specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/memberships/add-from/{sourceListId} Ajouter des adhésions à une liste spécifiée à partir d'une autre liste source. Cette opération est utile pour consolider les adhésions à une liste en transférant des membres d'une liste à une autre. Le point de terminaison ne renvoie aucun contenu en cas d'exécution réussie. > **Supported products** > **Required Scopes** # Delete all records from a segment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/delete-list-listId specs/2026-09/crm-lists-v2026-09.json DELETE /crm/lists/2026-09/{listId}/memberships Supprimez tous les contrôles d'accès associés à une liste spécifique dans votre compte HubSpot. Cette opération est utile lorsque vous devez retirer tous les membres d'une liste, ce qui efface efficacement ses données de contrôle d'accès. > **Supported products** > **Required Scopes** # Retrieve memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/get-lists-per-record specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/records/{objectTypeId}/{recordId}/memberships Récupérer les contrôles d'accès pour une fiche d'informations spécifique au sein d'un type d'objet donné. Ce point de terminaison est utile pour comprendre à quelles listes une fiche d'informations particulière est membre, en fonction du type d'objet et de l'ID d'enregistrement fournis. > **Supported products** > **Required Scopes** # Batch read memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/get-memberships-batch specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09/records/memberships/batch/read Récupérer les informations de contrôle d'accès par lot pour les fiches d'informations au sein de listes spécifiées. Ce point de terminaison est utile pour obtenir les détails de contrôle d'accès en masse, permettant une récupération efficace des données lors du traitement de plusieurs fiches d'informations. > **Supported products** > **Required Scopes** # Fetch segment memberships ordered by added to segment date Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/get-memberships-by-added-date specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/{listId}/memberships/join-order Récupérez l'ordre d'adhésion des membres pour une liste spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de visualiser l'ordre dans lequel les fiches d'informations ont rejoint la liste, ce qui peut être utile pour suivre les changements d'adhésion au fil du temps. > **Supported products** > **Required Scopes** # List memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/get-memberships-by-id specs/2026-09/crm-lists-v2026-09.json GET /crm/lists/2026-09/{listId}/memberships Récupérer les contrôles d'accès d'une liste spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de parcourir les contrôles d'accès à la liste à l'aide d'une pagination basée sur un curseur. Il est utile pour obtenir des informations détaillées sur les contrôles d'accès d'une liste donnée. > **Supported products** > **Required Scopes** # Remove segment memberships Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/remove-from-list specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/memberships/remove Supprimer des contrôles d'accès d'une liste spécifique dans votre compte HubSpot. Cette opération est utile pour gérer les contrôles d'accès aux listes en supprimant des fiches d'informations spécifiées de la liste. La requête nécessite une liste d'ID de fiches à supprimer de la liste spécifiée. > **Supported products** > **Required Scopes** # Update segment membership Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/memberships/update-list-memberships specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/memberships/add-and-remove Mettez à jour les contrôles d'accès d’une liste en ajoutant et en supprimant des membres en une seule opération. Ce point de terminaison vous permet de gérer efficacement les contrôles d'accès à une liste en spécifiant les membres à ajouter et ceux à supprimer en une seule requête. > **Supported products** > **Required Scopes** # Restore Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/restore-list specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/restore Restaurer une liste précédemment supprimée dans votre compte HubSpot. Cette opération vous permet de récupérer les listes qui ont été supprimées, en garantissant que toutes les données ou configurations associées sont rétablies. Cela peut être utile pour récupérer des listes supprimées par erreur ou nécessaires à nouveau pour des opérations en cours. > **Supported products** > **Required Scopes** # Search Lists Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/search/search-lists specs/2026-09/crm-lists-v2026-09.json POST /crm/lists/2026-09/search Rechercher des listes dans votre compte HubSpot à l’aide de divers critères. Ce point de terminaison vous permet de filtrer et de récupérer des listes en fonction de paramètres de recherche spécifiques, ce qui facilite la gestion et l’organisation efficace de vos listes. > **Supported products** > **Required Scopes** # Update list name Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/lists/update-list-name specs/2026-09/crm-lists-v2026-09.json PUT /crm/lists/2026-09/{listId}/update-list-name Mettre à jour le nom d'une liste spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de modifier le nom de la liste en spécifiant le nouveau nom comme paramètre de requête. Il est utile pour maintenir vos listes organisées et à jour avec des titres pertinents. > **Supported products** > **Required Scopes** # Create a batch of appointments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/batch/create-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/create Créer plusieurs rendez-vous en une seule demande. > **Supported products** > **Required Scopes** # Archive a batch of appointments by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/batch/delete-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/archive Archivez plusieurs rendez-vous à l'aide de leur ID. > **Supported products** > **Required Scopes** # Read a batch of appointments by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/batch/get-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update a batch of appointments by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/batch/update-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/update Mettre à jour un lot d'objets CRM d'un type spécifié dans HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets en une seule requête, ce qui le rend efficace pour les mises à jour en masse. Le corps de la requête doit inclure les objets et leurs propriétés à mettre à jour. > **Supported products** > **Required Scopes** # Create or update a batch of appointments by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/batch/upsert-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create appointment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/create-appointment specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType} Créez un rendez-vous avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de rendez-vous standard sont fournis. > **Supported products** > **Required Scopes** # Delete appointment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/delete-appointment specs/2026-09/crm-appointments-v2026-09.json DELETE /crm/objects/2026-09/{objectType}/{objectId} Déplacer un objet identifié par « {appointmentId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve appointment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/get-appointment specs/2026-09/crm-appointments-v2026-09.json GET /crm/objects/2026-09/{objectType}/{objectId} Lire un objet identifié par « {appointmentId} ». « {appointmentId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve appointments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/get-appointments specs/2026-09/crm-appointments-v2026-09.json GET /crm/objects/2026-09/{objectType} Lire une page de rendez-vous. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Appointments API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/guide # Merge two appointments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/merge/merge-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/merge Fusionner deux types d'objets ensemble > **Supported products** > **Required Scopes** # Appointment object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/object-definition # Search for appointments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/search/search-appointments specs/2026-09/crm-appointments-v2026-09.json POST /crm/objects/2026-09/{objectType}/search Recherchez des rendez-vous en fonction de critères spécifiques. En savoir plus sur la [recherche CRM](https://developers.hubspot.com/docs/guides/api/crm/search#make-a-search-request). > **Supported products** > **Required Scopes** # Update appointment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/appointments/update-appointment specs/2026-09/crm-appointments-v2026-09.json PATCH /crm/objects/2026-09/{objectType}/{objectId} Effectue une mise à jour partielle d'un objet identifié par « {appointmentId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {appointmentId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/batch/create-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/create Créez un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de créer plusieurs objets à la fois en spécifiant leurs propriétés. La réponse inclura une copie de chaque objet créé, y compris leurs identifiants. Ceci est utile pour ajouter efficacement de grands ensembles de données à votre CRM. > **Supported products** > **Required Scopes** # Archive carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/batch/delete-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/archive Archive un lot d'objets CRM identifiés par leurs identifiants. Cette opération déplace les objets spécifiés vers la corbeille, les archivant ainsi en masse. Elle est utile pour gérer de grands ensembles de données qui doivent être archivés simultanément. > **Supported products** > **Required Scopes** # Retrieve carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/batch/get-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Update carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/batch/update-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/update Mettre à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs propriétés. Il est utile pour les mises à jour en masse où vous devez modifier des informations sur plusieurs fiches d'informations simultanément. > **Supported products** > **Required Scopes** # Upsert carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/batch/upsert-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/upsert Créez ou mettez à jour un lot d'objets CRM à l'aide de valeurs de propriétés uniques. Cette opération vous permet d'insérer de nouveaux objets ou de mettre à jour des objets existants en fonction des identifiants uniques fournis. Elle est utile pour les opérations en masse où vous devez vous assurer que les objets sont à jour ou ajoutés s'ils n'existent pas. > **Supported products** > **Required Scopes** # Create a cart Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/create-cart specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts Créez un objet CRM avec les propriétés spécifiées et recevez une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM avec des propriétés prédéfinies. La documentation et des exemples pour la création d'objets standard sont fournis. > **Supported products** > **Required Scopes** # Archive a cart Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/delete-cart specs/2026-09/crm-carts-v2026-09.json DELETE /crm/objects/2026-09/carts/{cartId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération est utile pour supprimer temporairement des objets sans les effacer définitivement, permettant une récupération ou une révision potentielle avant la suppression finale. > **Supported products** > **Required Scopes** # Retrieve a cart Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/get-cart specs/2026-09/crm-carts-v2026-09.json GET /crm/objects/2026-09/carts/{cartId} Lire un objet identifié par « {objectId} ». Par défaut, « {objectId} » fait référence à l'ID d'objet interne, mais il peut également faire référence à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler le contenu de la réponse à l'aide du paramètre de requête «  propriétés » pour spécifier les propriétés à renvoyer. > **Supported products** > **Required Scopes** # Retrieve all carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/get-carts specs/2026-09/crm-carts-v2026-09.json GET /crm/objects/2026-09/carts Lisez une page d'objets du type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés que vous souhaitez inclure dans la réponse. Ce point de terminaison est utile pour récupérer une liste d'objets CRM avec des capacités de filtrage et de pagination facultatives. > **Supported products** > **Required Scopes** # Carts API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/guide # Cart object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/object-definition # Search for carts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/search/search-carts specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'interroger des objets CRM en spécifiant des groupes de filtres, des options de tri et des propriétés à inclure dans la réponse. Il est utile pour récupérer une liste personnalisée d'objets basée sur des paramètres de recherche spécifiques. > **Supported products** > **Required Scopes** # Update a cart Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/carts/update-cart specs/2026-09/crm-carts-v2026-09.json PATCH /crm/objects/2026-09/carts/{cartId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/batch/create-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/batch/create Créer un lot d'objets CRM avec les propriétés spécifiées. Ce point de terminaison vous permet de créer efficacement plusieurs objets en une seule requête, en renvoyant une réponse qui inclut les détails des objets créés. Il est utile pour les opérations de données en masse où vous devez ajouter plusieurs objets à la fois. > **Supported products** > **Required Scopes** # Delete payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/batch/delete-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/batch/archive Archivez un lot d'objets CRM par leurs identifiants. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui simplifie la gestion de grands jeux de données. > **Supported products** > **Required Scopes** # Retrieve payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/batch/get-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/batch/read Lisez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de récupérer plusieurs objets en une seule requête, ce qui le rend efficace pour la récupération de données en masse. Il prend en charge le filtrage des objets archivés. > **Supported products** > **Required Scopes** # Update payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/batch/update-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets d'un type spécifié en une seule requête. Il est utile pour les mises à jour en masse, garantissant que tous les objets spécifiés sont mis à jour de manière cohérente et efficace. > **Supported products** > **Required Scopes** # Upsert payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/batch/upsert-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/batch/upsert Créez ou mettez à jour un lot d'objets CRM à l'aide de valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, en veillant à ce que les objets existants soient mis à jour et que de nouveaux soient créés si nécessaire. > **Supported products** > **Required Scopes** # Create a payment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/create-commerce-payment specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments Créez un objet CRM avec les propriétés spécifiées et renvoyez une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouvelles fiches d'informations à votre système CRM. La documentation et des exemples pour la création d'objets standard sont fournis. > **Supported products** > **Required Scopes** # Delete a payment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/delete-commerce-payment specs/2026-09/crm-commerce-payments-v2026-09.json DELETE /crm/objects/2026-09/commerce_payments/{commercePaymentId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération archive l'objet, le rendant inactif mais récupérable si nécessaire. > **Supported products** > **Required Scopes** # Retrieve a payment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/get-commerce-payment specs/2026-09/crm-commerce-payments-v2026-09.json GET /crm/objects/2026-09/commerce_payments/{commercePaymentId} Lire un objet identifié par `objectId`. Par défaut, `objectId` fait référence à l'ID d'objet interne, mais vous pouvez spécifier une valeur de propriété unique à l'aide du paramètre de requête `idProperty`. Vous pouvez contrôler le contenu de la réponse à l'aide du paramètre de requête `properties` pour inclure des propriétés spécifiques. > **Supported products** > **Required Scopes** # Retrieve payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/get-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json GET /crm/objects/2026-09/commerce_payments Récupérer une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et le statut archivé. Ce point de terminaison est utile pour obtenir une liste d'objets avec des attributs et des associations spécifiques. > **Supported products** > **Required Scopes** # Payments API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/guide # Commerce payment object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/object-definition # Search for payments Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/search/search-commerce-payments specs/2026-09/crm-commerce-payments-v2026-09.json POST /crm/objects/2026-09/commerce_payments/search Rechercher des objets CRM d'un type spécifié en utilisant les critères de recherche fournis. Ce point de terminaison vous permet de filtrer et de trier les objets en fonction de diverses propriétés, ce qui est utile pour récupérer des ensembles de données spécifiques de votre CRM. > **Supported products** > **Required Scopes** # Update a payment Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-payments/update-commerce-payment specs/2026-09/crm-commerce-payments-v2026-09.json PATCH /crm/objects/2026-09/commerce_payments/{commercePaymentId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/batch/create-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/batch/create Créez plusieurs objets d'abonnement en une seule opération par lots, ce qui permet une saisie et une gestion efficaces des données. > **Supported products** > **Required Scopes** # Retrieve subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/batch/get-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/batch/read Récupérez un lot d'objets d'abonnement CRM par leur ID, y compris les propriétés spécifiées et leur historique. > **Supported products** > **Required Scopes** # Update subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/batch/update-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/batch/update Mettez à jour plusieurs objets d'abonnement en une seule opération par lots, ce qui permet de modifier efficacement les fiches d'informations d'abonnement CRM. > **Supported products** > **Required Scopes** # Create a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/create-commerce-subscription specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions Créez un nouvel objet d'abonnement avec les propriétés spécifiées et les associations facultatives. > **Supported products** > **Required Scopes** # Delete a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/delete-commerce-subscription specs/2026-09/crm-commerce-subscriptions-v2026-09.json DELETE /crm/objects/2026-09/subscriptions/{subscriptionId} Supprimez un abonnement spécifique à l'aide de son ID. > **Supported products** > **Required Scopes** # Retrieve a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/get-commerce-subscription specs/2026-09/crm-commerce-subscriptions-v2026-09.json GET /crm/objects/2026-09/subscriptions/{subscriptionId} Récupérez un abonnement spécifique à l'aide de son ID, y compris ses propriétés et ses associations. > **Supported products** > **Required Scopes** # Retrieve subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/get-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json GET /crm/objects/2026-09/subscriptions Récupérez une liste d'objets d'abonnement, avec des options permettant de filtrer par propriétés, associations et statut d'archivage. > **Supported products** > **Required Scopes** # Subscriptions API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/guide # Commerce subscription object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/object-definition # Update a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/update-commerce-subscription specs/2026-09/crm-commerce-subscriptions-v2026-09.json PATCH /crm/objects/2026-09/subscriptions/{subscriptionId} Mettez à jour un abonnement spécifique par son ID avec de nouvelles valeurs de propriété. > **Supported products** > **Required Scopes** # Archive multiple subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/batch/delete-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/batch/archive Archivez un lot d'objets d'abonnement en fournissant leurs ID dans le corps de la requête. > **Supported products** > **Required Scopes** # Upsert subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/batch/upsert-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/batch/upsert Ce point de terminaison vous permet d'effectuer une opération d'insertion par lots sur des objets d'abonnement, qui mettra à jour les fiches d'informations existantes ou en créera de nouveaux s'ils n'existent pas encore. L'opération renvoie le statut, les horodatages et une liste des objets traités avec succès. > **Supported products** > **Required Scopes** # Search for subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/commerce-subscriptions/search/search-commerce-subscriptions specs/2026-09/crm-commerce-subscriptions-v2026-09.json POST /crm/objects/2026-09/subscriptions/search Effectuez une recherche d'abonnements CRM Commerce en fonction de filtres, de propriétés et d'options de tri définis. Ce point de terminaison permet d'effectuer des requêtes complexes pour récupérer des données d'abonnement spécifiques, en prenant en charge la pagination et divers paramètres de recherche. > **Supported products** > **Required Scopes** # Create communications Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/batch/create-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/batch/create Créer un lot d'objets CRM avec des propriétés spécifiées dans votre compte HubSpot. Ce point de terminaison permet la création de plusieurs objets en une seule requête, renvoyant une copie de chaque objet, y compris leurs identifiants. Il est utile pour ajouter efficacement un grand nombre d'objets à la fois. > **Supported products** > **Required Scopes** # Archive communications Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/batch/delete-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/batch/archive Archiver un lot d'objets CRM par leurs identifiants. Ce point de terminaison vous permet de déplacer plusieurs objets d'un type spécifié vers la corbeille en une seule requête. Il est utile pour gérer et organiser efficacement de grands ensembles de données en supprimant les fiches d'informations inutiles ou obsolètes. > **Supported products** > **Required Scopes** # Retrieve communications Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/batch/get-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/batch/read Lisez un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de récupérer plusieurs objets en une seule requête, ce qui peut être utile pour collecter efficacement des données pour un ensemble d'objets. Vous pouvez spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Update communciations Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/batch/update-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/batch/update Mettre à jour un lot d’objets CRM dans HubSpot en spécifiant le type d’objet et en fournissant les données nécessaires dans le corps de la requête. Ce point de terminaison est utile pour effectuer des mises à jour groupées d’objets, tels que des contacts ou des transactions, en un seul appel d'API. Il prend en charge la mise à jour simultanée de plusieurs objets, ce qui simplifie le processus de gestion des données au sein de votre CRM. > **Supported products** > **Required Scopes** # Upsert communications Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/batch/upsert-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/batch/upsert Créer ou mettre à jour un lot d'objets CRM à l'aide de valeurs de propriété uniques. Ce point de terminaison permet de gérer efficacement de grands ensembles d'objets en insérant de nouveaux objets ou en mettant à jour ceux qui existent, en fonction de leurs propriétés uniques. > **Supported products** > **Required Scopes** # Create a communication Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/create-communication specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications Créer un objet CRM avec les propriétés spécifiées et recevoir une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouvelles fiches d'informations à votre système CRM. S'assurer que toutes les propriétés nécessaires sont incluses dans le corps de la requête, conformément à la documentation des objets standard. > **Supported products** > **Required Scopes** # Delete a communication Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/delete-communication specs/2026-09/crm-communications-v2026-09.json DELETE /crm/objects/2026-09/communications/{communicationId} Déplacer un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique en fonction de son identifiant unique, le retirant ainsi de l'utilisation active tout en conservant la possibilité de le restaurer ultérieurement si nécessaire. > **Supported products** > **Required Scopes** # Retrieve a communication Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/get-communication specs/2026-09/crm-communications-v2026-09.json GET /crm/objects/2026-09/communications/{communicationId} Lire un objet identifié par « objectId ». Ce point de terminaison vous permet de récupérer les détails d'un objet CRM spécifique à l'aide de son ID ou de toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler les données renvoyées en spécifiant les propriétés souhaitées via le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # Retrieve communications Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/get-communications specs/2026-09/crm-communications-v2026-09.json GET /crm/objects/2026-09/communications Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et le statut archivé via les paramètres de requête. Ce point de terminaison est utile pour récupérer une liste d'objets CRM avec des détails spécifiques. > **Supported products** > **Required Scopes** # Communications API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/guide # Communication object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/object-definition # Search for messages Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/search/search-communications specs/2026-09/crm-communications-v2026-09.json POST /crm/objects/2026-09/communications/search Recherchez des objets CRM d'un type spécifié en utilisant les critères de recherche fournis. Ce point de terminaison vous permet de filtrer et de trier les résultats en fonction de diverses propriétés et conditions. Il est utile pour récupérer des objets spécifiques qui correspondent à vos paramètres de recherche. > **Supported products** > **Required Scopes** # Update a communication Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/communications/update-communication specs/2026-09/crm-communications-v2026-09.json PATCH /crm/objects/2026-09/communications/{communicationId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». Par défaut, « {objectId} » fait référence à l'ID d'objet interne, mais vous pouvez spécifier n'importe quelle valeur de propriété unique à l'aide du paramètre de requête « idProperty ». Les valeurs de propriété fournies écraseront les valeurs existantes, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Pour effacer la valeur d'une propriété, transmettez une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/batch/create-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/batch/create Créez un lot d'entreprises. Le tableau « entrées » peut contenir un objet « propriétés » pour définir des valeurs de propriété pour chaque entreprise, avec un tableau « associations » pour définir les [associations](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4) avec d'autres fiches d'informations du CRM. > **Supported products** > **Required Scopes** # Archive a batch of companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/batch/delete-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/batch/archive Supprimez un lot d'entreprises via son ID. Les entreprises supprimées peuvent être restaurées dans les 90 jours suivant leur suppression. En savoir plus sur la [restauration de fiches d'informations] (https://knowledge.hubspot.com/records/restore-deleted-records). > **Supported products** > **Required Scopes** # Retrieve a batch of companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/batch/get-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/batch/read Récupérez un lot d'entreprises par ID (« companyId ») ou une propriété unique (« idProperty »). Vous pouvez préciser ce qui est renvoyé en utilisant le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Update a batch of companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/batch/update-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/batch/update Mettez à jour un lot d'entreprises par ID. > **Supported products** > **Required Scopes** # Create or update a batch of companies by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/batch/upsert-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/batch/upsert Créez ou mettez à jour des entreprises identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create a company Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/create-company specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies Créez une seule entreprise. Incluez un objet « propriétés » pour définir les [valeurs des propriétés](https://developers.hubspot.com/docs/guides/api/crm/properties) de l'entreprise, ainsi qu'un tableau « associations » pour définir les [associations](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4) avec d'autres fiches d'informations du CRM. > **Supported products** > **Required Scopes** # Archive a company Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/delete-company specs/2026-09/crm-companies-v2026-09.json DELETE /crm/objects/2026-09/companies/{companyId} Supprimez une entreprise via son ID. Les entreprises supprimées peuvent être restaurées dans les 90 jours suivant leur suppression. En savoir plus sur la [restauration de fiches d'informations] (https://knowledge.hubspot.com/records/restore-deleted-records). > **Supported products** > **Required Scopes** # Retrieve companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/get-companies specs/2026-09/crm-companies-v2026-09.json GET /crm/objects/2026-09/companies Récupérez toutes les entreprises en utilisant les paramètres de requête pour contrôler les informations renvoyées. > **Supported products** > **Required Scopes** # Retrieve a company Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/get-company specs/2026-09/crm-companies-v2026-09.json GET /crm/objects/2026-09/companies/{companyId} Récupérez une entreprise via son ID (« companyId ») ou une propriété unique (« idProperty »). Vous pouvez préciser ce qui est renvoyé en utilisant le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # API du CRM | Entreprises Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/guide Les fiches d'informations d'entreprise stockent des données sur les entreprises. Les points de terminaison des entreprises vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes.  > **[Run in Postman](https://app.getpostman.com/run-collection/caf616003f52c955b5f6)** > **Exigences de portée** # Entreprises Dans HubSpot, les entreprises stockent des informations sur les organisations qui interagissent avec elles. Les points de terminaison des entreprises vous permettent de créer et de gérer des fiches d'informations d'entreprise ainsi que de synchroniser des données d'entreprise entre HubSpot et d'autres systèmes. Découvrez-en davantage sur les API d'objets, de fiches d'informations, de propriétés et d'associations dans le [guide Comprendre le CRM](/docs/guides/crm/understanding-the-crm). Pour plus d'informations générales sur les objets et les fiches d'informations dans HubSpot, [découvrez comment gérer votre base de données CRM](https://knowledge.hubspot.com/get-started/manage-your-crm-database). ## Créer des entreprises Pour créer de nouvelles entreprises, effectuez une requête `POST` à `/crm/v3/objects/companies`. Dans votre requête, incluez les données de votre entreprise dans un objet de propriétés. Vous pouvez également ajouter un objet d'association pour associer votre nouvelle entreprise à des fiches d'informations existantes (par exemple, des contacts ou des transactions) ou à des activités (par exemple, des réunions ou des notes). ### Propriétés Les détails de l'entreprise sont stockés dans des propriétés d'entreprise. Il existe des [propriétés d'entreprise HubSpot par défaut](https://knowledge.hubspot.com/properties/hubspot-crm-default-company-properties), mais vous pouvez également [créer des propriétés personnalisées](https://knowledge.hubspot.com/properties/create-and-edit-properties). Lorsque vous créez une nouvelle entreprise, vous devez inclure au moins une des propriétés suivantes dans votre requête : `name` ou `domain`. Il est recommandé de toujours inclure `domain`, car les noms de domaine constituent le [principal identifiant unique](https://knowledge.hubspot.com/records/deduplication-of-records#automatic-deduplication-in-hubspot) pour éviter les entreprises en double dans HubSpot. Si une entreprise possède [plusieurs domaines](https://knowledge.hubspot.com/records/add-multiple-domain-names-to-a-company-record), vous pouvez les ajouter via l'API en utilisant le champ `hs_additional_domains` avec des points-virgules séparant chaque domaine. Par exemple : `"hs_additional_domains" : "domain.com; domain2.com; domain3.com"`. Pour afficher toutes les propriétés disponibles, vous pouvez récupérer une liste des propriétés d'entreprise de votre compte en effectuant une requête `GET` à `/crm/v3/properties/companies`. Découvrez-en davantage sur l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). > [!WARNING] > > ### Remarque: > > si vous avez inclus `lifecyclestage` dans votre requête, les valeurs doivent faire référence au nom interne de la phase du cycle de vie. Les noms internes des phases par défaut sont des valeurs textuelles et ne changent pas, même si vous modifiez le [libellé](https://knowledge.hubspot.com/properties/create-and-edit-properties#:~:text=the%20properties%20settings.-,Label/Name%3A,-enter%20a%20unique) de la phase (par exemple, `subscriber` ou `marketingqualifiedlead`). Les noms internes des [phases personnalisées](https://knowledge.hubspot.com/object-settings/create-and-customize-lifecycle-stages) sont des valeurs numériques. Vous pouvez trouver l'ID interne d'une phase dans vos [paramètres de phase du cycle de vie](https://knowledge.hubspot.com/object-settings/create-and-customize-lifecycle-stages#:~:text=To%20edit%20a%20lifecycle%20stage%2C%20hover%20over%20the%20stage%20and%20click%20Edit.%20In%20the%20right%20panel%2C%20edit%20the%20Stage%20name%2C%20then%20click%20Edit%20lifecycle%20stage%20to%20confirm.%20Click%20the%20code%20codcode%20icon%20to%20view%20the%20stage%27s%20internal%20ID%2C%20which%20is%20used%20by%20integrations%20and%20APIs.) ou en récupérant la propriété de phase du cycle de vie via l'API. Par exemple, pour créer une nouvelle entreprise, votre requête peut ressembler à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "name": "HubSpot", "domain": "hubspot.com", "city": "Cambridge", "industry": "Technology", "phone": "555-555-555", "state": "Massachusetts", "lifecyclestage": "51439524" } } ``` ### Associations Lorsque vous créez une nouvelle entreprise, vous pouvez également associer l'entreprise à des [fiches d'informations](https://knowledge.hubspot.com/records/associate-records) ou [activités](https://knowledge.hubspot.com/records/associate-activities-with-records) existantes dans un objet d'associations. Par exemple, pour associer une nouvelle entreprise à un contact et une adresse e-mail existants, votre requête ressemblerait à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "name": "HubSpot", "domain": "hubspot.com", "city": "Cambridge", "industry": "Technology", "phone": "555-555-555", "state": "Massachusetts", "lifecyclestage": "51439524" }, "associations": [ { "to": { "id": 101 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 280 } ] }, { "to": { "id": 556677 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 185 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Paramètre | Description | | - | - | | `to` | La fiche d'informations ou l'activité à laquelle vous souhaitez associer l'entreprise, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre l'entreprise et la fiche d'informations/l'activité. Inclut la `associationCategory` et le `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | ## Récupérer des entreprises Vous pouvez récupérer des entreprises individuellement ou par lots. * Pour récupérer une entreprise individuelle, effectuez une requête `GET` à `/crm/v3/objects/companies/{companyId}`. * Pour demander une liste de toutes les entreprises, effectuez une requête `GET` à `/crm/v3/objects/companies`. Pour ces points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si l'entreprise demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si l'entreprise demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | * Pour récupérer un lot d'entreprises spécifiques par ID de fiche d'informations ou selon une [propriété d'identifiant unique personnalisée](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties), effectuez une requête `POST` à `crm/v3/objects/companies/batch/read`. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). Pour le point de terminaison de lecture par lot, vous pouvez également utiliser le paramètre `idProperty` facultatif pour récupérer les entreprises en fonction d'une [propriété d'identifiant unique](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) personnalisée. Par défaut, les valeurs d'`id` dans la requête font référence à l'ID de fiche d'informations (`hs_object_id`), de sorte que le paramètre `idProperty` n'est pas requis lors de la récupération par ID de fiche d'informations. Pour utiliser une propriété de valeur unique personnalisée pour récupérer des entreprises, vous devez inclure le paramètre `idProperty`. Par exemple, pour récupérer un lot d'entreprises, votre requête peut ressembler à ce qui suit : ```json theme={null} ///Example request body with record ID { "properties": ["name", "domain"], "inputs": [ { "id": "56789" }, { "id": "23456" } ] } ``` ```json theme={null} ///Example request body with a unique value property { "properties": ["name", "domain"], "idProperty": "uniquepropertyexample", "inputs": [ { "id": "abc" }, { "id": "def" } ] } ``` Pour récupérer des entreprises avec des valeurs actuelles et historiques pour une propriété, votre requête pourrait ressembler à : ```json theme={null} ///Example request body with record ID (current and historical values) { "propertiesWithHistory": ["name"], "inputs": [ { "id": "56789" }, { "id": "23456" } ] } ``` ## Mettre à jour des entreprises Vous pouvez mettre à jour des entreprises individuellement ou par lots. Pour les entreprises existantes, l'ID de la fiche d'informations de l'entreprise est une valeur unique que vous pouvez utiliser pour mettre à jour l'entreprise via l'API. Pour mettre à jour une entreprise individuelle avec son ID d'entreprise, effectuez une requête `PATCH` à `/crm/v3/objects/companies/{companyId}` et incluez les données que vous souhaitez mettre à jour. > [!WARNING] > > ### Remarque: > > Si vous mettez à jour la propriété `lifecyclestage`, vous ne pouvez qu'avancer la valeur dans l'ordre des étapes. Pour rétrograder la phase du cycle de vie, vous devrez d'abord effacer la valeur de phase du cycle de vie existante de la fiche d'informations. La valeur peut être [effacée manuellement](https://knowledge.hubspot.com/records/update-a-property-value-for-a-record), ou automatiquement via un [workflow](https://knowledge.hubspot.com/records/change-record-lifecycle-stages-in-bulk) ou une intégration qui synchronise les données de contact. ### Associer des entreprises existantes à des fiches d'informations et activités Pour associer une entreprise à d'autres fiches d'informations de CRM ou à une activité, effectuez une requête `PUT` à `/crm/v3/objects/companies/{companyId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. > [!NOTE] > > Pour récupérer la valeur `associationTypeId`, reportez-vous à [cette liste](/docs/api-reference/crm-associations-v4/guide#association-type-id-values) de valeurs par défaut ou effectuez une requête `GET` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels`. Découvrez-en davantage sur l'association de fiches d'informations avec l'[API des associations](/docs/api-reference/crm-associations-v4/guide). ### Supprimer une association Pour supprimer une association entre une entreprise et une fiche d'informations ou une activité, effectuez une requête `DELETE` à l'URL suivante : `/crm/v3/objects/companies/{companyId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. ## Épingler une activité à une fiche d'informations d'une entreprise Vous pouvez épingler une activité à une fiche d'informations d'une entreprise via l'API en incluant le champ `hs_pinned_engagement_id` dans votre requête. Dans le champ, incluez l'`id` de l'activité à épingler, qui peut être récupéré via les [API d'engagement](/docs/api-reference/overview). Vous pouvez épingler une activité par fiche d'informations, et l'activité doit déjà être associée à l'entreprise avant l'épinglage. Pour définir ou mettre à jour l'activité épinglée d'une entreprise, votre requête peut ressembler à : ```json theme={null} ///Example request body PATCH /crm/v3/objects/companies/{companyId} { "properties": { "hs_pinned_engagement_id": 123456789 } } ``` Vous pouvez également créer une entreprise, l'associer à une activité existante et épingler l'activité dans la même requête. Par exemple : ```json theme={null} ///Example request body POST /crm/v3/objects/companies { "properties": { "domain": "example.com", "name": "Example Company", "hs_pinned_engagement_id": 123456789 }, "associations": [ { "to": { "id": 123456789 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 189 } ] } ] } ``` ## Supprimer des entreprises Vous pouvez supprimer des entreprises individuellement ou par lots, ce qui placera l'entreprise dans la corbeille dans HubSpot. Vous pourrez ensuite [restaurer l'entreprise dans HubSpot](https://knowledge.hubspot.com/records/restore-deleted-records). Pour supprimer une entreprise avec son ID, effectuez une requête `DELETE` à `/crm/v3/objects/companies/{companyId}`. Pour en savoir plus sur la suppression d'entreprises par lots, consultez la [documentation de référence](/docs/api-reference/crm-companies-v3/guide). # Merge two companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/merge-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/merge Fusionner deux fiches d'informations d'entreprise. En savoir plus sur [la fusion des fiches d'informations](https://knowledge.hubspot.com/records/merge-records). > **Supported products** > **Required Scopes** # Company object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/object-definition # Search for companies Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/search/search-companies specs/2026-09/crm-companies-v2026-09.json POST /crm/objects/2026-09/companies/search Rechercher des entreprises en filtrant les propriétés, en parcourant les associations et en triant les résultats. En savoir plus sur la [recherche CRM](https://developers.hubspot.com/docs/guides/api/crm/search#make-a-search-request). > **Supported products** > **Required Scopes** # Update a company Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/companies/update-company specs/2026-09/crm-companies-v2026-09.json PATCH /crm/objects/2026-09/companies/{companyId} Mettez à jour une entreprise par ID (« companyId ») ou par valeur de propriété unique (« idProperty »). Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/batch/create-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/batch/create Créez un lot de contacts. Le tableau « entrées » peut contenir un objet « propriétés » pour définir des valeurs de propriété pour chaque fiche d'informations, avec un tableau « associations » pour définir les [associations](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4) avec d'autres fiches d'informations du CRM. > **Supported products** > **Required Scopes** # Delete contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/batch/delete-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/batch/archive Archivez un lot de contacts via son ID. Les contacts archivés peuvent être restaurés dans les 90 jours suivant leur suppression. Pour en savoir plus sur les [données affectées par les suppressions de contacts] (https://knowledge.hubspot.com/privacy-and-consent/understand-restorable-and-permanent-contact-deletions) et sur la manière de [restaurer les fiches d'informations archivées] (https://knowledge.hubspot.com/records/restore-deleted-records). > **Supported products** > **Required Scopes** # Retrieve contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/batch/get-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/batch/read Récupérez un lot de contacts via son ID (contactId) ou par valeur de propriété unique (idProperty). > **Supported products** > **Required Scopes** # Update contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/batch/update-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/batch/update Mettez à jour un lot de contacts via son ID (contactId) ou par valeur de propriété unique (idProperty). Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Upsert contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/batch/upsert-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/batch/upsert Remonter un lot de contacts. Le tableau « Entrées » peut contenir un objet « Propriétés » pour définir les valeurs des propriétés de chaque fiche d'informations. > **Supported products** > **Required Scopes** # Create a contact Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/create-contact specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts Créez un seul contact. Incluez un objet « propriétés » pour définir les [valeurs des propriétés](https://developers.hubspot.com/docs/guides/api/crm/properties) du contact ainsi qu'un tableau « associations » pour définir les [associations](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4) avec d'autres fiches d'informations du CRM. > **Supported products** > **Required Scopes** # Delete a contact Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/delete-contact specs/2026-09/crm-contacts-v2026-09.json DELETE /crm/objects/2026-09/contacts/{contactId} Supprimez un contact via son ID. Les contacts supprimés peuvent être restaurés dans les 90 jours suivant leur suppression. Pour en savoir plus sur les [données affectées par les suppressions de contacts] (https://knowledge.hubspot.com/privacy-and-consent/understand-restorable-and-permanent-contact-deletions) et sur la manière de [restaurer les fiches d'informations archivées] (https://knowledge.hubspot.com/records/restore-deleted-records). > **Supported products** > **Required Scopes** # Retrieve a contact Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/get-contact specs/2026-09/crm-contacts-v2026-09.json GET /crm/objects/2026-09/contacts/{contactId} Récupérez un contact via son ID (contactId) ou une propriété unique (idProperty). Vous pouvez préciser ce qui est renvoyé en utilisant le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/get-contacts specs/2026-09/crm-contacts-v2026-09.json GET /crm/objects/2026-09/contacts Récupérez tous les contacts en utilisant des paramètres de requête pour spécifier les informations renvoyées. > **Supported products** > **Required Scopes** # API du CRM | Contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/guide Les fiches d'informations de contact stockent des informations sur des personnes. Les points de terminaison des contacts vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes. > **[Run in Postman](https://app.getpostman.com/run-collection/dd75d149eaa15806754f)** > **Exigences de portée** # Contacts Dans HubSpot, les contacts stockent des informations sur les personnes qui interagissent avec votre entreprise. Les points de terminaison des contacts vous permettent de créer et de gérer des fiches d'informations de contact ainsi que de synchroniser des données de contact entre HubSpot et d'autres systèmes. Découvrez-en davantage sur les API d'objets, de fiches d'informations, de propriétés et d'associations dans le [guide Comprendre le CRM](/docs/guides/crm/understanding-the-crm). Pour plus d'informations générales sur les objets et les fiches d'informations dans HubSpot, [découvrez comment gérer votre base de données CRM](http://knowledge.hubspot.com/contacts-user-guide). ## Créer des contacts Pour créer de nouveaux contacts, effectuez une requête `POST` à `/crm/v3/objects/contacts`. Dans votre requête, incluez les données de votre contact dans un objet de propriétés. Vous pouvez également ajouter un objet d'association pour associer votre nouveau contact à des fiches d'informations existantes (par exemple : des entreprises ou des transactions) ou à des activités (par exemple : des réunions ou des notes). ### Propriétés Les détails du contact sont stockés dans des propriétés de contact. Il existe des [propriétés de contact HubSpot par défaut](https://knowledge.hubspot.com/fr/properties/hubspots-default-contact-properties), mais vous pouvez également créer des [propriétés personnalisées](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties). Lorsque vous créez un nouveau contact, vous devez inclure au moins une des propriétés suivantes dans votre requête : `email`, `firstname` ou `lastname`. Il est recommandé de toujours inclure `email`, car les adresses e-mail constituent le [principal identifiant unique](https://knowledge.hubspot.com/fr/records/deduplication-of-records#automatic-deduplication-in-hubspot) pour éviter les contacts en double dans HubSpot. Pour afficher toutes les propriétés disponibles, vous pouvez récupérer une liste des contacts de votre compte en effectuant une requête `GET` à `/crm/v3/properties/contacts`. Découvrez-en davantage sur l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). > [!WARNING] > > ### Remarque : > > Si vous avez inclus `lifecyclestage` dans votre requête, les valeurs doivent faire référence au nom interne de la phase du cycle de vie. Les noms internes des phases par défaut sont des valeurs textes et ne changent pas, même si vous modifiez le [libellé](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties) de la phase (par exemple : `subscriber` ou `marketingqualifiedlead`). Les noms internes des [phases personnalisées](https://knowledge.hubspot.com/fr/object-settings/create-and-customize-lifecycle-stages) sont des valeurs numériques. Vous pouvez trouver l'ID interne d'une phase dans vos [paramètres de phase du cycle de vie](https://knowledge.hubspot.com/fr/object-settings/create-and-customize-lifecycle-stages)ou en récupérant la propriété de phase du cycle de vie via l'API. Par exemple, pour créer un nouveau contact, votre requête peut ressembler à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "email": "example@hubspot.com", "firstname": "Jane", "lastname": "Doe", "phone": "+18884827768", "company": "HubSpot", "website": "hubspot.com", "lifecyclestage": "marketingqualifiedlead" } } ``` ### Associations Lorsque vous créez un nouveau contact, vous pouvez également associer le contact à des [fiches d'informations](https://knowledge.hubspot.com/fr/records/associate-records) ou [activités](https://knowledge.hubspot.com/fr/records/associate-activities-with-records) existantes en incluant un objet d'associations. Par exemple, pour associer un nouveau contact à une entreprise et une adresse e-mail existantes, votre requête ressemblerait à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "email": "example@hubspot.com", "firstname": "Jane", "lastname": "Doe", "phone": "+18884827768", "company": "HubSpot", "website": "hubspot.com", "lifecyclestage": "marketingqualifiedlead" }, "associations": [ { "to": { "id": 123456 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 279 } ] }, { "to": { "id": 556677 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 197 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Paramètre | Description | | - | - | | `to` | La fiche d'informations ou l'activité à laquelle vous souhaitez associer le contact, en fonction de sa valeur `id` unique. | | `types` | Le type d'association entre le contact et la fiche d'informations/l'activité. Inclut `associationCategory` et `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | ## Récupérer des contacts par ID de fiche d'informations, e-mail ou propriété de valeur unique personnalisée Vous pouvez récupérer des contacts individuellement ou par lots. * Pour récupérer un contact individuel, effectuez une requête `GET` à `/crm/v3/objects/contacts/{contactId} or` `/crm/v3/objects/contacts/{email}?idProperty=email`. * Pour demander une liste de tous les contacts, effectuez une requête `GET` à `/crm/v3/objects/contacts`. Pour ces points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si le contact demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si le contact demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | * Pour récupérer un lot de contacts spécifiques par ID de fiche d'informations, adresse e-mail ou selon une [propriété d'identifiant unique personnalisée](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties), effectuez une requête `POST` à `crm/v3/objects/contacts/batch/read`. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). Pour le point de terminaison de lecture par lot, vous pouvez utiliser le paramètre `idProperty` facultatif pour récupérer les contacts par `email` ou en fonction d'une [propriété d'identifiant unique](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) personnalisée. Par défaut, les valeurs d'`id` dans la requête font référence à l'ID de fiche d'informations (`hs_object_id`), de sorte que le paramètre `idProperty` n'est pas requis lors de la récupération par ID de fiche d'informations. Si vous utilisez `email` ou une propriété de valeur unique personnalisée pour récupérer des contacts, vous devez inclure le paramètre `idProperty`. Par exemple, pour récupérer un lot de contacts en fonction de valeurs d'ID de fiche d'informations, votre requête peut ressembler à ce qui suit (valeurs actuelles uniquement, ou valeurs actuelles et historiques) : ```json theme={null} { "properties": ["email", "lifecyclestage", "jobtitle"], "inputs": [ { "id": "1234567" }, { "id": "987456" } ] } ``` ```json theme={null} { "propertiesWithHistory": ["lifecyclestage", "hs_lead_status"], "inputs": [ { "id": "1234567" }, { "id": "987456" } ] } ``` Pour récupérer des contacts en fonction d'une adresse e-mail ou d'un identifiant unique personnalisé (par exemple, un numéro d'identification client unique pour votre entreprise), votre requête ressemblerait à ce qui suit : ```json theme={null} { "properties": ["email", "lifecyclestage", "jobtitle"], "idProperty": "email", "inputs": [ { "id": "lgilmore@thedragonfly.com" }, { "id": "sstjames@thedragonfly.com" } ] } ``` ```json theme={null} { "properties": ["email", "lifecyclestage", "jobtitle"], "idProperty": "internalcustomerid", "inputs": [ { "id": "12345" }, { "id": "67891" } ] } ``` ## Mettre à jour des contacts Vous pouvez mettre à jour des contacts individuellement ou par lots. Pour mettre à jour des contacts individuels, vous pouvez utiliser l'ID de fiche d'informations (`id`) ou l'adresse e-mail du contact (`email`). * Pour mettre à jour un contact individuel avec son ID de fiche d'informations, effectuez une requête `PATCH` à `/crm/v3/objects/contacts/{contactId}` et incluez les données que vous souhaitez mettre à jour. * Pour mettre à jour un contact individuel avec son ID de fiche d'informations, effectuez une requête `PATCH` à `/crm/v3/objects/contacts/{email}?idProperty=email` et incluez les données que vous souhaitez mettre à jour. Par exemple : ```json theme={null} { "properties": { "favorite_food": "burger", "jobtitle": "Manager", "lifecyclestage": "Customer" } } ``` > [!WARNING] > > ### Remarque : > > Si vous mettez à jour la propriété `lifecyclestage`, vous ne pouvez qu'avancer la valeur dans l'ordre des étapes. Pour rétrograder la phase du cycle de vie, vous devrez d'abord effacer la valeur de phase du cycle de vie existante de la fiche d'informations. La valeur peut être [effacée manuellement](https://knowledge.hubspot.com/fr/records/update-a-property-value-for-a-record), ou automatiquement via un [workflow](https://knowledge.hubspot.com/fr/records/change-record-lifecycle-stages-in-bulk) ou une intégration qui synchronise les données de contact. Pour mettre à jour des contacts par lots, vous pouvez utiliser les valeurs d'ID de fiche d'informations des contacts (`id`). Pour mettre à jour plusieurs contacts, effectuez une requête `POST` à `/crm/v3/objects/contacts/batch/update`. Dans le corps de votre requête, incluez l'ID de fiche d'informations de chaque contact comme `id` et incluez les propriétés que vous souhaitez mettre à jour. Par exemple : ```json theme={null} { "inputs": [ { "id": "123456789", "properties": { "favorite_food": "burger" } }, { "id": "56789123", "properties": { "favorite_food": "Donut" } } ] } ``` ## Insérer des contacts Vous pouvez également créer et mettre à jour des contacts par lots en même temps en utilisant le point de terminaison upsert. Pour ce point de terminaison, vous pouvez utiliser `email` ou une [propriété d'identifiant unique personnalisée](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties). À la suite de la requête, si les contacts existent déjà, ils seront mis à jour. S'ils n'existent pas, ils seront créés. Pour insérer des contacts, effectuez une requête `POST` à `/crm/v3/objects/contacts/batch/upsert`. Dans le corps de votre requête, incluez le paramètre `idProperty` pour déterminer si vous utilisez `email` ou une propriété d'identifiant unique personnalisée. Incluez la valeur de cette propriété en tant qu'`id` et ajoutez les autres propriétés que vous souhaitez définir ou mettre à jour. > [!WARNING] > > ### Remarque : > > Les mises à jour partielles ne sont pas prises en charge lors de l'utilisation de `email` comme `idProperty` pour les contacts. Pour réaliser un upsert partiel, utilisez plutôt une propriété d'identifiant unique personnalisé comme `idProperty`. Par exemple, votre requête pourrait ressembler à ce qui suit : ```json theme={null} { "inputs": [ { "properties": { "phone": "+18884827768" }, "id": "test@test.com", "idProperty": "email" }, { "properties": { "phone": "+18888888888" }, "id": "example@hubspot.com", "idProperty": "email" } ] } ``` ## Associer des contacts existants à des fiches d'informations ou activités Pour associer un contact à d'autres fiches d'informations de CRM ou à une activité, effectuez une requête `PUT` à `/crm/v3/objects/contacts/{contactId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. > [!NOTE] > > Pour récupérer la valeur `associationTypeId`, reportez-vous à [cette liste](/docs/api-reference/crm-associations-v4/guide#association-type-id-values) de valeurs par défaut ou effectuez une requête `GET` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels`. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) ### Supprimer une association Pour supprimer une association entre un contact et une fiche d'informations ou une activité, effectuez une requête `DELETE` à l'URL suivante : `/crm/v3/objects/contacts/{contactID}/associations/{toObjectType}/{toObjectId}/{associationTypeId}` ## Épingler une activité à une fiche d'informations d'un contact Vous pouvez [épingler une activité](https://knowledge.hubspot.com/fr/records/pin-an-activity-on-a-record) à une fiche d'informations de contact en incluant le champ `hs_pinned_engagement_id` dans votre requête. Dans le champ, incluez l'`id` de l'activité à épingler, qui peut être récupéré via les [API d'engagement](/docs/api-reference/overview). Vous pouvez épingler une activité par fiche d'informations, et l'activité doit déjà être associée au contact avant l'épinglage. Pour définir ou mettre à jour l'activité épinglée d'un contact, votre requête peut ressembler à : ```json theme={null} { "properties": { "hs_pinned_engagement_id": 123456789 } } ``` Vous pouvez également créer un contact, l'associer à une activité existante et épingler l'activité dans la même requête. Par exemple : ```json theme={null} { "properties": { "email": "example@hubspot.com", "firstname": "Jane", "lastname": "Doe", "phone": "+18884827768", "hs_pinned_engagement_id": 123456789 }, "associations": [ { "to": { "id": 123456789 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 201 } ] } ] } ``` ## Supprimer des contacts Vous pouvez supprimer des contacts individuellement ou par lots, ce qui placera le contact dans la corbeille dans HubSpot. Vous pourrez ensuite [restaurer la transaction dans HubSpot](https://knowledge.hubspot.com/fr/records/restore-deleted-records). Pour supprimer un contact individuel avec son ID, effectuez une requête `DELETE` à `/crm/v3/objects/contacts/{contactId}`. Pour en savoir plus sur la suppression de contacts par lots, consultez la [documentation de référence](/docs/api-reference/crm-contacts-v3/guide). ## E-mails supplémentaires Les adresses e-mail additionnelles sont utilisées lorsqu'un contact a plus d'une adresse e-mail. Elles peuvent être ajoutées [manuellement sur une fiche d'informations de contact dans HubSpot](https://knowledge.hubspot.com/fr/records/add-multiple-email-addresses-to-a-contact) ou automatiquement après une [fusion de contact](https://knowledge.hubspot.com/fr/records/merge-records#contact-merge-exceptions). Les e-mails supplémentaires sont toujours des identifiants uniques pour les contacts, de sorte que plusieurs contacts ne peuvent pas avoir les mêmes adresses e-mail additionnelles. Pour afficher les e-mails additionnelles pour les contacts, lorsque vous récupérez tous les contacts ou des contacts individuels, incluez le paramètre `properties` avec les propriétés `email` et `hs_additional_emails`. L'adresse e-mail principale d'un contact sera affichée dans le champ `email` et les adresses e-mail supplémentaires seront affichées dans le champ `hs_additional_emails`. ## Limites d'utilisation Les opérations par lot sont limitées à 100 fiches d'informations à la fois. Par exemple, vous ne pouvez pas mettre à jour par lots plus de 100 contacts dans une requête. Il existe également des limites pour les [contacts et les soumissions de formulaires](https://developers.hubspot.fr/docs#limits_contacts). # Merge two contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/merge-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/merge Fusionner deux fiches d'informations de contacts. En savoir plus sur [la fusion des fiches d'informations](https://knowledge.hubspot.com/records/merge-records). > **Supported products** > **Required Scopes** # Contact object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/object-definition # Search for contacts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/search/search-contacts specs/2026-09/crm-contacts-v2026-09.json POST /crm/objects/2026-09/contacts/search Rechercher des contacts en filtrant les propriétés, en parcourant les associations et en triant les résultats. En savoir plus sur la [recherche CRM](https://developers.hubspot.com/docs/guides/api/crm/search#make-a-search-request). > **Supported products** > **Required Scopes** # Update a contact Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contacts/update-contact specs/2026-09/crm-contacts-v2026-09.json PATCH /crm/objects/2026-09/contacts/{contactId} Mettez à jour un contact existant, identifié par ID ou par valeur d'e-mail/de propriété unique. Pour identifier un contact par ID, incluez l'ID dans le chemin d'URL de demande. Pour identifier un contact à partir de son e-mail ou d'une autre propriété unique, incluez la valeur d'e-mail/de propriété dans le chemin d'URL de demande et ajoutez le paramètre de requête `idProperty` (`/crm/v3/objects/contacts/jon@website.com?idProperty=email`). Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Batch retrieve contracts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contracts/batch/get-contracts specs/2026-09/crm-contracts-v2026-09.json POST /crm/objects/2026-09/contracts/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Required Scopes** # Retrieve contract Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contracts/get-contract specs/2026-09/crm-contracts-v2026-09.json GET /crm/objects/2026-09/contracts/{contractId} Lire un objet identifié par « {contractId} ». « {contractId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contracts/get-contracts specs/2026-09/crm-contracts-v2026-09.json GET /crm/objects/2026-09/contracts Lire une page de contrats. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Required Scopes** # Contracts API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/contracts/guide # Create a batch of courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/batch/create-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/batch/create Créer un lot d’objets CRM d’un type spécifié dans HubSpot. Ce point de terminaison permet la création de plusieurs objets en une seule requête, ce qui le rend efficace pour les opérations en masse. La réponse inclut une copie de chaque objet créé, y compris leurs identifiants. Ceci est utile pour initialiser de grands ensembles de données ou intégrer des sources de données externes à HubSpot. > **Supported products** > **Required Scopes** # Delete courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/batch/delete-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/batch/archive Archivez un lot d'objets CRM identifiés par leurs ID. Cette opération est utile pour gérer de grands ensembles d'objets qui doivent être archivés simultanément, ce qui simplifie les processus de gestion des données. > **Supported products** > **Required Scopes** # Retrieve courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/batch/get-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/batch/update-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets simultanément en fournissant leurs détails dans le corps de la requête. Il est utile pour mettre à jour efficacement de grands ensembles de données, en garantissant que tous les objets spécifiés sont mis à jour en une seule opération. > **Supported products** > **Required Scopes** # Upsert courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/batch/upsert-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/batch/upsert Créer ou mettre à jour un lot d'objets CRM en utilisant des valeurs de propriété uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, garantissant que les objets existants sont mis à jour et que de nouveaux objets sont créés si nécessaire. > **Supported products** > **Required Scopes** # Create a course Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/create-course specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410 Créer un objet CRM avec les propriétés spécifiées et recevoir une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à un système CRM et les personnaliser avec des propriétés spécifiques. > **Supported products** > **Required Scopes** # Delete a course Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/delete-course specs/2026-09/crm-courses-v2026-09.json DELETE /crm/objects/2026-09/0-410/{courseId} Déplacer un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son identifiant unique, afin qu'il ne soit plus utilisé directement, tout en le conservant dans le système pour une éventuelle récupération ou référence. > **Supported products** > **Required Scopes** # Retrieve a course Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/get-course specs/2026-09/crm-courses-v2026-09.json GET /crm/objects/2026-09/0-410/{courseId} Lisez un objet identifié par « objectId ». Par défaut, « objectId » fait référence à l'ID d'objet interne, mais il peut aussi faire référence à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler le contenu de la réponse à l'aide du paramètre de requête « properties » pour spécifier les propriétés à inclure. > **Supported products** > **Required Scopes** # Retrieve courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/get-courses specs/2026-09/crm-courses-v2026-09.json GET /crm/objects/2026-09/0-410 Lire une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés à inclure dans la réponse. Ce point de terminaison prend en charge la pagination et vous permet de récupérer les ID d'objets associés et les fiches d'informations archivées. > **Supported products** > **Required Scopes** # Courses API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/guide # Merge two courses Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/merge/merge-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/courses/merge Fusionnez deux objets CRM du même type dans votre compte HubSpot. Cette opération combine les propriétés des objets spécifiés, ce qui donne un objet unique avec des données fusionnées. Utilisez ce point de terminaison pour regrouper les fiches d'informations en double ou unifier les données associées sous un seul objet. > **Supported products** > **Required Scopes** # Course object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/object-definition # Search for objects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/search/search-courses specs/2026-09/crm-courses-v2026-09.json POST /crm/objects/2026-09/0-410/search Recherchez des objets CRM d'un type spécifié en utilisant divers critères. Ce point de terminaison vous permet de filtrer et de trier les objets en fonction de leurs propriétés, ce qui facilite la récupération efficace des données pertinentes. Il est utile pour trouver des fiches d'informations spécifiques ou analyser les tendances des données au sein de votre CRM. > **Supported products** > **Required Scopes** # Update a course Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/courses/update-course specs/2026-09/crm-courses-v2026-09.json PATCH /crm/objects/2026-09/0-410/{courseId} Effectuez une mise à jour partielle d'un objet identifié par « {objectId} ». Par défaut, « {objectId} » fait référence à l'ID d'objet interne, mais il peut aussi faire référence à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Les valeurs de propriété fournies écraseront les valeurs existantes. Les propriétés en lecture seule et inexistantes seront ignorées. Pour effacer la valeur d'une propriété, transmettez une chaîne de caractères vide. > **Supported products** > **Required Scopes** # Create a batch of objects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/batch/create-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/create Créer un lot d'objets CRM pour un type d'objet spécifié dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui le rend efficace pour les opérations en masse. La réponse inclut les objets créés ainsi que leurs identifiants. Ceci est utile pour initialiser de grands jeux de données ou migrer des données vers HubSpot. > **Supported products** > **Required Scopes** # Archive a batch of objects by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/batch/delete-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/archive Archiver un lot d'objets CRM identifiés par leurs identifiants. Cette opération est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui rationalise la gestion de grands ensembles de données. > **Supported products** > **Required Scopes** # Read a batch of objects by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/batch/get-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/read Récupérer un lot d'objets CRM à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui peut aider à optimiser les performances et à réduire le nombre d'appels d'API nécessaires. Vous pouvez spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Update a batch of objects by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/batch/update-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/update Mettre à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs détails dans le corps de la requête. Il est utile pour effectuer des mises à jour en masse des propriétés d'objets de manière efficace. > **Supported products** > **Required Scopes** # Create or update a batch of objects by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/batch/upsert-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/upsert Créer ou mettre à jour un lot d’objets CRM en fonction des valeurs de propriété uniques. Ce point de terminaison permet de gérer efficacement de grands ensembles de données en créant de nouveaux objets ou en mettant à jour des objets existants selon des identifiants uniques. Il est particulièrement utile pour synchroniser des données entre systèmes ou garantir que vos données CRM sont à jour. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/create-custom-object specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType} Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison vous permet de créer des objets standard dans votre système CRM, en fournissant de la documentation et des exemples pour vous guider. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/delete-custom-object specs/2026-09/crm-custom-objects-v2026-09.json DELETE /crm/objects/2026-09/{objectType}/{objectId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération archive l'objet spécifié, le rendant inactif sans le supprimer définitivement du système. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/get-custom-object specs/2026-09/crm-custom-objects-v2026-09.json GET /crm/objects/2026-09/{objectType}/{objectId} Lire un objet identifié par `objectId`. L'`objectId` fait référence à l'ID d'objet interne par défaut, ou facultativement à toute valeur de propriété unique telle que spécifiée par le paramètre de requête `idProperty`. Vous pouvez contrôler ce qui est renvoyé via le paramètre de requête `properties`. Ce point de terminaison est utile pour récupérer des objets spécifiques et leurs détails depuis votre compte HubSpot. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/get-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json GET /crm/objects/2026-09/{objectType} Lire une page d'objets d'un type pécris dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en indiquant les propriétés, les associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison est utile pour récupérer une liste d'objets CRM avec des détails et des associations spécifiques. > **Supported products** > **Required Scopes** # CRM | Objets personnalisés Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/guide Les objets personnalisés HubSpot permettent aux organisations de représenter et d'organiser ces données en fonction des besoins de vos activités avec l'API d'objets personnalisés. > **Produits pris en charge** > **Portées requises** > **[Run in Postman](https://app.getpostman.com/run-collection/40a2452fc88665fbe786)** Chaque compte HubSpot présente des objets CRM standard : contacts, entreprises, transactions et tickets. Pour représenter et organiser vos données de CRM en fonction des besoins de votre entreprise, vous pouvez également créer des objets personnalisés. Vous pouvez [créer un objet personnalisé](https://knowledge.hubspot.com/fr/object-settings/create-custom-objects) dans HubSpot ou utiliser l'API d'objets personnalisés pour définir des objets personnalisés, des propriétés et des associations avec d'autres objets CRM. Ci-dessous, découvrez comment créer et gérer des objets personnalisés via l'API, et profitez d'un [exemple qui explique comment créer un objet personnalisé](#custom-object-example). Pour en savoir plus sur la création d'objets personnalisés, consultez les articles suivants sur le blog pour les développeurs de HubSpot : * [Comment créer des objets personnalisés évolutifs](https://developers.hubspot.com/blog/how-to-think-like-an-architect-by-building-scalable-custom-objects) * [Comment créer des objets personnalisés à l'aide d'applications privées](https://developers.hubspot.com/blog/how-to-build-a-custom-object-using-private-apps) > [!WARNING] > > ### Remarque : > > Les objets personnalisés sont spécifiques à chaque compte et, en fonction de votre abonnement, le nombre d'objets personnalisés que vous pouvez créer est limité. Découvrez-en davantage sur vos limites dans le [catalogue des produits et services de HubSpot](https://legal.hubspot.com/hubspot-product-and-services-catalog). ## Méthodes d'authentification Vous pouvez créer, lire et mettre à jour des objets personnalisés via l'une des méthodes d'authentification suivantes : * [OAuth](https://developers.hubspot.com/custom-objects-schema-pilot) * [Jetons d'accès d'application privée](/docs/api-reference/auth-oauth-v1/guide) ## Créer un objet personnalisé Pour créer un objet personnalisé, vous devez d'abord définir le schéma d'objet. Le schéma inclut le nom de l'objet, les propriétés et les associations à d'autres objets de CRM. Vous pouvez trouver les détails complets de la requête de schéma dans l'onglet *Schéma d'objet* en haut de cet article. Vous pouvez également consulter un exemple de requête [ci-dessous](#custom-object-example). Pour créer le schéma d'objet personnalisé, effectuez une requête `POST` à `crm/v3/schemas`. Dans le corps de la requête, incluez les définitions de votre schéma d'objet, y compris son nom, ses propriétés et ses associations. Lorsque vous nommez votre objet personnalisé, tenez compte des points suivants : * Une fois que vous créez un objet, le nom et le libellé de l'objet ne peuvent pas être modifiés. * Le nom peut uniquement contenir des lettres, des chiffres et des tirets bas. * Le premier caractère du nom doit être une lettre. * Les longs libellés peuvent être coupés dans certaines parties du produit. Ci-dessous, consultez les définitions requises pour les propriétés et les associations de l'objet. ### Propriétés Les propriétés que vous définissez dans le corps de la requête seront utilisées pour stocker des informations sur les fiches d'informations d'objets personnalisés individuelles. > [!WARNING] > > ### Remarque : > > Vous pouvez avoir jusqu'à 10 [propriétés de valeur uniques](/docs/guides/crm/understanding-the-crm#:~:text=Creating%20your%20own%20unique%20identifiers) pour chaque objet personnalisé dans votre compte HubSpot. Vous utiliserez vos propriétés définies pour remplir les champs suivants basés sur les propriétés : * **requiredProperties :** les propriétés requises lors de la création d'une nouvelle fiche d'informations d'objet personnalisé. * **searchableProperties :** les propriétés qui sont indexées pour la recherche dans HubSpot. * **primaryDisplayProperty :** la propriété utilisée pour nommer des fiches d'informations d'objets personnalisés. * \*\*secondaryDisplayProperties \*\*: les propriétés qui apparaissent sur les fiches d'informations individuelles sous primaryDisplayProperty. ![custom-object-secondary-display-properties0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/custom-object-secondary-display-properties0.png) * La première propriété répertoriée dans `secondaryDisplayProperties` sera également ajoutée en tant que quatrième filtre sur la page index des objets s'il s'agit d'un des types de propriété suivants : * `string` * `number` * `enumeration` * `boolean` * `datetime` ![custom-object-dashboard-filter0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/custom-object-dashboard-filter0.png) * Pour supprimer une propriété d'affichage de l'interface utilisateur, vous devez d'abord supprimer la propriété, puis la recréer. Par défaut, lors de la création de propriétés durant la requête de schéma, le `type` de propriété est défini sur `string`, et le `fieldType` est défini sur `text`. Vous trouverez ci-dessous les valeurs que vous pouvez utiliser pour créer différents types de propriété. | `type` | Description | Valeurs `fieldType` valides | | - | - | - | | `enumeration` | Une chaîne représentant un ensemble d'options, séparées par un point-virgule. | `booleancheckbox`, `checkbox`, `radio`, `select` | | `date` | Une [valeur au format ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) représentant un jour, un mois et une année spécifiques. | `date` | | `dateTime` | Une [valeur au format ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) représentant un jour, un mois, une année et une heure spécifiques. L'application HubSpot n'affichera pas l'heure. | `date` | | `string` | Une chaîne de texte brut limitée à 65 536 caractères. | `file`, `text`, `textarea` | | `number` | Une valeur numérique contenant des chiffres et au maximum une décimale. | `number` | | `fieldType` | Description | | - | - | | `booleancheckbox` | Une entrée qui permet aux utilisateurs de sélectionner Oui ou Non. Lorsque vous l'utilisez dans un formulaire, cette case sera affichée comme une case à cocher unique. | | `checkbox` | Une liste de cases à cocher qui permet à un utilisateur de sélectionner plusieurs options à partir d'un ensemble d'options pour la propriété. | | `date` | Une valeur de date, affichée comme un sélecteur de date. | | `file` | Permet de charger un fichier dans un formulaire. Stocké et affiché en tant que lien d'URL vers le fichier. | | `number` | Une chaîne de chiffres ou de nombres sous forme décimale ou en notation scientifique. | | `radio` | Une entrée qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. Lorsque vous l'utilisez dans un formulaire, elle sera affichée comme un ensemble de cases d'option. | | `select` | Une entrée déroulante qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. | | `text` | Une chaîne de texte brut, affichée dans une entrée de texte sur une seule ligne. | | `textarea` | Une chaîne de texte brut, affichée dans une entrée de texte sur plusieurs lignes. | ### Associations HubSpot associera automatiquement un objet personnalisé aux objets d'e-mail, de réunion, de note, de tâche, d'appel et de conversation. Vous pouvez également associer votre objet personnalisé à d'autres objets HubSpot standard ou à d'autres objets personnalisés. Lors de la création d'associations via la requête de création de schéma, identifiez les objets standard en utilisant leurs noms et les objets personnalisés en utilisant leur valeur `objectTypeId`. *Par exemple :* ```json theme={null} "associatedObjects": [ "CONTACT", "COMPANY", "TICKET", "DEAL", "2-3453932" ] ``` ## Récupérer des objets personnalisés existants Pour récupérer tous les objets personnalisés, effectuez une requête `GET` à `/crm/v3/schemas`. Pour récupérer un objet personnalisé spécifique, effectuez une requête `GET` à l'un des points de terminaison suivants : * `/crm/v3/schemas/{fullyQualifiedName}`. Vous pouvez trouver l'élément `fullyQualifiedName` dans son schéma, qui est dérivé de `p{portal_id}_{object_name}`. Vous pouvez trouver l'identifiant de portail de votre compte à l'aide de l'[API d'informations de compte.](/docs/api-reference/account-account-info-v3/guide) Par exemple, pour un compte avec un ID `1234` et un objet nommé `lender`, l'URL de votre requête peut ressembler à ce qui suit : * [`https://api.hubapi.com/crm/v3/schemas/p1234_lende`](https://api.hubapi.com/crm/v3/schemas/p1234_lender) ## Récupérer des fiches d'informations d'objets personnalisés Vous pouvez également récupérer les fiches d'informations d'un objet personnalisé. * Pour récupérer une fiche d'informations spécifique par sa valeur d'ID, effectuez une requête `GET` à `crm/v3/objects/{objectType}/{recordId}`. Pour ce point de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si la fiche d'informations d'objet personnalisé demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si la fiche d'informations d'objet personnalisé demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | * Pour récupérer plusieurs fiches d'informations, effectuez une requête `POST` à `crm/v3/objects/{objectType}/batch/read`. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). Dans votre requête, vous pouvez récupérer les fiches d'informations selon leur ID (`hs_object_id`) ou une [propriété d'identifiant unique personnalisée.](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) Par défaut, les valeurs `id` dans la requête font référence à l'ID de fiche d'informations, de sorte que le paramètre `idProperty` n'est pas requis lors de la récupération par ID de fiche d'informations. Pour utiliser une propriété de valeur unique personnalisée, vous devez inclure le paramètre `idProperty`. Par exemple, pour récupérer un lot fiches d'informations d'objet personnalisé, votre requête peut ressembler à ce qui suit : ```json theme={null} { "properties": ["petname"], "inputs": [ { "id": "12345" }, { "id": "67891" } ] } ``` ```json theme={null} { "properties": ["petname"], "idProperty": "uniquepropertyexample", "inputs": [ { "id": "abc" }, { "id": "def" } ] } ``` Pour récupérer des fiches d'informations d'objets personnalisés avec des valeurs actuelles et historiques pour une propriété, votre requête peut ressembler à ceci : ```json theme={null} { "propertiesWithHistory": ["pet_owner"], "inputs": [ { "id": "12345" }, { "id": "67891" } ] } ``` ## Mettre à jour des objets personnalisés existants Pour mettre à jour le schéma d'un objet, effectuez une requête `PATCH` à `https://api.hubapi.com/crm/v3/schemas/{objectTypeId}`. Une fois votre objet personnalisé défini : * Le nom et les libellés de l'objet (singulier et pluriel) ne peuvent pas être modifiés. * Les propriétés `requiredProperties`, `searchableProperties`, `primaryDisplayProperty` et `secondaryDisplayProperties` peuvent être modifiés en mettant à jour le schéma de l'objet. Pour définir une nouvelle propriété en tant que propriété obligatoire, consultable ou d'affichage, vous devez créer la propriété avant de mettre à jour le schéma. * Vous pouvez créer et modifier des propriétés d'objets personnalisés [dans HubSpot](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties#view-and-edit-properties) ou via l'[API de propriétés](/docs/api-reference/crm-properties-v3/guide). ### Mettre à jour des associations Pour ajouter d'autres associations d'objets à votre objet personnalisé, effectuez une requête `POST` à `/crm/v3/schemas/_{objectTypeId}_/associations`. Vous ne pouvez associer votre objet personnalisé qu'à des objets HubSpot standard (par exemple : *contact*, *entreprise*, *transaction* ou *ticket*) ou d'autres objets personnalisés. Dans le champ `toObjectTypeId`, identifiez les objets personnalisés par leur valeur `objectTypeId` et les objets standard par leur nom. Par exemple : ```json theme={null} { "fromObjectTypeId": "2-3444025", "toObjectTypeId": "ticket", "name": "cat_to_ticket" } ``` ## Supprimer un objet personnalisé Vous ne pouvez supprimer un objet personnalisé qu'après la suppression de toutes les instances d'objet de ce type. Pour supprimer un objet personnalisé, effectuez une requête `DELETE` à `/crm/v3/schemas/{objectType}`. Si vous devez créer un nouvel objet personnalisé portant le même nom que l'objet supprimé, vous devez supprimer le schéma en effectuant une requête `DELETE` à `/crm/v3/schemas/{objectType}?archived=true`. Vous ne pouvez supprimer un type d'objet personnalisé qu'après la suppression de toutes les instances d'objet de ce type, associations et propriétés d'objet personnalisé. ## Exemple d'objet personnalisé Cet exemple explique comment créer un objet personnalisé. Pour de plus amples détails sur les requêtes affichées, consultez l'onglet Définition d'objet en haut de l'article. Cette section aborde : 1. La création d'un schéma d'objet personnalisé 2. La création d'une fiche d'informations d'objet personnalisé 3. L'association d'une fiche d'informations d'objet personnalisé à un contact HubSpot 4. La création d'une nouvelle définition d'association entre l'objet personnalisé et le ticket HubSpot 5. La création d'une nouvelle définition de propriété 6. La mise à jour du schéma d'objet (c.-à-d. : `secondaryDisplayProperties`) avec la nouvelle propriété *** **Objectif :** un concessionnaire automobile appelé CarSpot souhaite stocker son inventaire dans HubSpot à l'aide d'un objet personnalisé. Pour suivre la propriété et les achats des véhicules, il associe ces derniers à des fiches d'informations de contact. Parallèlement, il suivra également l'entretien des véhicules à l'aide de tickets HubSpot et de propriétés personnalisées. ### Création du schéma d'objet CarSpot doit créer un schéma d'objet qui peut représenter les attributs suivants en tant que propriétés : 1. **État (neuf ou occasion) :** énumération 2. **Date de réception chez le concessionnaire :** date 3. **Année :** nombre 4. **Marque :** chaîne 5. **Modèle :** chaîne 6. **NIV :** chaîne (valeur unique) 7. **Couleur :** chaîne 8. **Kilométrage :** nombre 9. **Prix :** nombre 10. **Remarques :** chaîne Le concessionnaire ajoutera également une définition expliquant comment utiliser l'objet et définira une association entre l'objet personnalisé et l'objet de contact standard afin d'associer des véhicules à des acheteurs potentiels. Une fois le modèle de données finalisé, le concessionnaire créera le schéma d'objet en effectuant une requête `POST` à `/crm/v3/schemas` avec le corps de la requête suivant : ```json theme={null} { "name": "cars", "description": "Cars keeps track of cars currently or previously held in our inventory.", "labels": { "singular": "Car", "plural": "Cars" }, "primaryDisplayProperty": "model", "secondaryDisplayProperties": ["make"], "searchableProperties": ["year", "make", "vin", "model"], "requiredProperties": ["year", "make", "vin", "model"], "properties": [ { "name": "condition", "label": "Condition", "type": "enumeration", "fieldType": "select", "options": [ { "label": "New", "value": "new" }, { "label": "Used", "value": "used" } ] }, { "name": "date_received", "label": "Date received", "type": "date", "fieldType": "date" }, { "name": "year", "label": "Year", "type": "number", "fieldType": "number" }, { "name": "make", "label": "Make", "type": "string", "fieldType": "text" }, { "name": "model", "label": "Model", "type": "string", "fieldType": "text" }, { "name": "vin", "label": "VIN", "type": "string", "hasUniqueValue": true, "fieldType": "text" }, { "name": "color", "label": "Color", "type": "string", "fieldType": "text" }, { "name": "mileage", "label": "Mileage", "type": "number", "fieldType": "number" }, { "name": "price", "label": "Price", "type": "number", "fieldType": "number" }, { "name": "notes", "label": "Notes", "type": "string", "fieldType": "text" } ], "associatedObjects": ["CONTACT"] } ``` > [!TIP] > > Après avoir créé le schéma de l'objet, CarSpot s'assure de noter le champ `{objectTypeId}` du nouvel objet, car il l'utilisera plus tard pour récupérer et mettre à jour l'objet. Ils peuvent également utiliser la valeur `{fullyQualifiedName}` s'ils le préfèrent. ### Création d'un enregistrement de l'objet personnalisé *Une fois l'objet personnalisé créé, CarSpot peut désormais créer des fiches d'informations d'objet pour chaque véhicule de son inventaire.* *Le concessionnaire créera son premier véhicule en effectuant une requête `POST` à `/crm/v3/objects/2-3465404` avec le corps suivant :* ```json theme={null} { "properties": { "condition": "used", "date_received": "1582416000000", "year": "2014", "make": "Nissan", "model": "Frontier", "vin": "4Y1SL65848Z411439", "color": "White", "mileage": "80000", "price": "12000", "notes": "Excellent condition. No accidents." } } ``` La réponse pour cet appel d'API se présente comme suit : ```json theme={null} { "id": "181308", "properties": { "color": "White", "condition": "used", "make": "Nissan", "mileage": "80000", "model": "Frontier", "vin": "4Y1SL65848Z411439", "notes": "Excellent condition. No accidents.", "price": "12000", "year": "2014", "date_received": "1582416000000" }, "createdAt": "2020-02-23T01:44:11.035Z", "updatedAt": "2020-02-23T01:44:11.035Z", "archived": false } ``` Une fois la fiche d'informations créée, il peut utiliser la valeur `id` pour associer ultérieurement le véhicule à un contact existant. > [!WARNING] > > Pour récupérer ultérieurement cette fiche d'informations avec des propriétés spécifiques, il peut effectuer une requête `GET` à `https://api.hubapi.com/crm/v3/objects/2-3465404/181308?portalId=1234567&properties=year&properties=make&properties=model` ### Association de la fiche d'informations d'objet personnalisé à une autre fiche d'informations Vous pouvez utiliser l'ID de fiche d'informations de la nouvelle voiture (`181308`) et l'ID d'une autre fiche d'informations pour associer une fiche d'informations d'objet personnalisé à une fiche d'informations d'un autre objet. Pour créer une association, effectuez une requête `PUT` à `/crm/v3/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}/{associationType}`. Si la relation d'objet est déjà [définie](#defining-a-new-association), pour déterminer la valeur `associationType`, effectuez une requête `GET` à `crm/v3/schemas/{objectType}`. Par exemple, avec l'*ID `51` de contact et le type d'association `75`,* CarSpot peut associer la fiche d'informations de la voiture à un contact. Utilisant les ID ci-dessus, l'URL de la requête sera créée comme suit : `https://api.hubspot.com/crm/v3/objects/2-3465404/181308/associations/contacts/51/75` ### Définition d'une nouvelle association CarSpot souhaite maintenant commencer à suivre les services après-vente pour ses véhicules. Pour ce faire, il utilisera les tickets HubSpot pour enregistrer tout entretien effectué. Pour autoriser les associations entre les véhicules et les tickets, il créera une nouvelle association en effectuant une requête `POST` à **`/crm/v3/schemas/2-3465404/associations`** avec le corps suivant : ```json theme={null} { "fromObjectTypeId": "2-3465404", "toObjectTypeId": "ticket", "name": "car_to_ticket" } ``` La réponse pour cet appel d'API se présente comme suit : ```json theme={null} { "id": "121", "createdAt": "2020-02-23T01:52:12.893826Z", "updatedAt": "2020-02-23T01:52:12.893826Z", "fromObjectTypeId": "2-3465404", "toObjectTypeId": "0-5", "name": "car_to_ticket" } ``` > [!NOTE] > > Lors de la création d'une association entre deux objets personnalisés, spécifiez les objets personnalisés par leur *objectTypeId* dans le champ *toObjectTypeId*. Pour les objets standard, vous pouvez les identifier par leur nom ou utiliser les valeurs suivantes : > > * **Contact :** 0-1 > * **Entreprise :** 0-2 > * **Transaction :** 0-3 > * **Ticket :** 0-5 ### Définition d'une nouvelle propriété Alors qu'il continue de suivre les entretiens, CarSpot voit une opportunité de regrouper ses services d'entretien dans des forfaits. Pour suivre ces forfaits d'entretien sur des fiches d'informations de véhicule individuelles, il créera une nouvelle propriété d'énumération contenant les forfaits disponibles. Pour définir une nouvelle propriété, il effectuera une requête `POST` à `/crm/v3/properties/2-3465404` avec le corps de requête suivant : ```json theme={null} { "groupName": "car_information", "name": "maintenance_package", "label": "Maintenance Package", "type": "enumeration", "fieldType": "select", "options": [ { "label": "Basic", "value": "basic" }, { "label": "Oil change only", "value": "oil_change_only" }, { "label": "Scheduled", "value": "scheduled" } ] } ``` La réponse pour cet appel d'API se présente comme suit : ```json theme={null} { "updatedAt": "2020-02-23T02:08:20.055Z", "createdAt": "2020-02-23T02:08:20.055Z", "name": "maintenance_package", "label": "Maintenance Package", "type": "enumeration", "fieldType": "select", "groupName": "car_information", "options": [ { "label": "Basic", "value": "basic", "displayOrder": -1, "hidden": false }, { "label": "Oil change only", "value": "oil_change_only", "displayOrder": -1, "hidden": false }, { "label": "Scheduled", "value": "scheduled", "displayOrder": -1, "hidden": false } ], "displayOrder": -1, "calculated": false, "externalOptions": false, "archived": false, "hasUniqueValue": false, "hidden": false, "modificationMetadata": { "archivable": true, "readOnlyDefinition": false, "readOnlyValue": false }, "formField": false } ``` Une fois que cette propriété est créée, il souhaite que cette propriété apparaisse dans la barre latérale de chaque fiche d'informations de véhicule afin que les informations soient facilement disponibles pour ses commerciaux et mécaniciens. Pour cela, il ajoutera la propriété à `secondaryDisplayProperties` en effectuant une requête `PATCH` à `/crm/v3/schemas/2-3465404` avec le corps suivant : ```json theme={null} { "secondaryDisplayProperties": ["maintenance_package"] } ``` La réponse pour cet appel d'API se présente comme suit : ```json theme={null} { "id": "3465404", "createdAt": "2020-02-23T01:24:54.537Z", "updatedAt": "2020-02-23T02:12:24.175874Z", "labels": { "singular": "Car", "plural": "Cars" }, "requiredProperties": ["year", "model", "vin", "make"], "searchableProperties": ["year", "model", "vin", "make"], "primaryDisplayProperty": "model", "secondaryDisplayProperties": ["maintenance_package"], "portalId": 1234567, "name": "car" } ``` Désormais, lorsqu'un mécanicien ouvre une fiche d'informations de contact qui contient un véhicule associé, la propriété s'affichera dans la carte d'objet personnalisé dans la barre latérale : ![Capture d'écran du 06/03/2020 à 11.08.41](https://developers.hubspot.com/hs-fs/hubfs/Screen%20Shot%202020-03-06%20at%2011.08.41%20AM.png?width=386\&name=Screen%20Shot%202020-03-06%20at%2011.08.41%20AM.png) À mesure que CarSpot utilise HubSpot, il trouvera probablement des moyens d'affiner et d'étendre cet objet personnalisé et plus encore à l'aide de l'API de HubSpot. Il pourra même décider de [créer des pages dynamiques à l'aide de ses données d'objet personnalisé.](/docs/cms/start-building/features/data-driven-content/crm-data-in-cms-pages) # Merge two objects with same type Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/merge-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/merge Fusionner deux objets CRM de même type en un seul objet. Cette opération est utile pour consolider les fiches d'informations en double et assurer la cohérence des données. La requête nécessite de spécifier l’objet principal et l’objet à fusionner. > **Supported products** > **Required Scopes** # Search for CRM objects of a specified type. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/search/search-custom-objects specs/2026-09/crm-custom-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/search Rechercher des objets CRM d’un type spécifié en utilisant les critères de recherche fournis. Ce point de terminaison permet de filtrer et trier les objets en fonction de diverses propriétés, en renvoyant une collection d’objets correspondants ainsi que le nombre total. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/custom-objects/update-custom-object specs/2026-09/crm-custom-objects-v2026-09.json PATCH /crm/objects/2026-09/{objectType}/{objectId} Effectuer une mise à jour partielle d'un objet identifié par `{objectId}` dans le CRM. L'`{objectId}` fait référence par défaut à l'ID interne de l'objet, ou à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Les valeurs de propriété fournies écraseront les valeurs existantes, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Retrieve deal splits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deal-splits/get-deal-splits specs/2026-09/crm-deal-splits-v2026-09.json POST /deal-splits/2026-09/batch/read Lire un lot d'objets de répartition de transactions par leur ID interne d'objet de la transaction associé. > **Supported products** > **Required Scopes** # Deal Splits API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deal-splits/guide # Upsert deal splits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deal-splits/upsert-deal-splits specs/2026-09/crm-deal-splits-v2026-09.json POST /deal-splits/2026-09/batch/upsert Créer ou remplacer les répartitions de transactions pour les transactions avec les ID fournis. Les pourcentages de répartition de transactions pour chaque transaction doivent s'additionner à 1,0 (100 %) et peuvent avoir jusqu'à 8 décimales. > **Supported products** > **Required Scopes** # Create a batch of deals Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/batch/create-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/batch/create Créez plusieurs transactions en une seule demande. > **Supported products** > **Required Scopes** # Archive a batch of deals by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/batch/delete-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/batch/archive Archiver plusieurs transactions à l'aide de leurs ID. > **Supported products** > **Required Scopes** # Read a batch of deals by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/batch/get-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update a batch of deals by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/batch/update-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/batch/update Mettez à jour plusieurs transactions à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. > **Supported products** > **Required Scopes** # Create or update a batch of deals by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/batch/upsert-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/create-deal specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3 Créez une transaction avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de transactions standard sont fournis. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/delete-deal specs/2026-09/crm-deals-v2026-09.json DELETE /crm/objects/2026-09/0-3/{dealId} Déplacer un objet identifié par « {dealId} » dans la corbeille. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/get-deal specs/2026-09/crm-deals-v2026-09.json GET /crm/objects/2026-09/0-3/{dealId} Lire un objet identifié par « {dealId} ». « {dealId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/get-deals specs/2026-09/crm-deals-v2026-09.json GET /crm/objects/2026-09/0-3 Lire une page de transactions. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # API du CRM | Transactions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/guide Une transaction stocke des données sur une transaction en cours. Les points de terminaison des transactions vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes.  > **[Run in Postman](https://app.getpostman.com/run-collection/8b5f74a661b06f5a54bd)** > **Exigences de portée** Dans HubSpot, les transactions représentent des transactions avec des contacts ou des entreprises. Les transactions sont suivies tout au long de votre processus de vente via des [phases de pipeline](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines) jusqu'à ce qu'elles soient gagnées ou perdues. Les points de terminaison des transactions vous permettent de créer et de gérer des fiches d'informations de transaction ainsi que de synchroniser des données de transaction entre HubSpot et d'autres systèmes. Découvrez-en davantage sur les API d'objets, de fiches d'informations, de propriétés et d'associations dans le [guide Comprendre le CRM](/docs/guides/crm/understanding-the-crm). Pour plus d'informations générales sur les objets et les fiches d'informations dans HubSpot, [découvrez comment gérer votre base de données CRM](https://knowledge.hubspot.com/fr/get-started/manage-your-crm-database). ## Créer des transactions Pour créer de nouvelles transactions, effectuez une requête `POST` à `/crm/v3/objects/deals`. Dans le corps de la requête, incluez les données de votre transaction dans un objet `properties`. Vous pouvez également ajouter un objet `associations` pour associer votre nouvelle transaction à des fiches d'informations existantes (par exemple, des contacts ou des entreprises) ou à des activités (par exemple, des réunions ou des notes). ### Propriétés Les détails de la transaction sont stockés dans des propriétés de transaction. HubSpot fournit un ensemble de [propriétés de transaction par défaut](https://knowledge.hubspot.com/fr/properties/hubspots-default-deal-properties), mais vous pouvez également [créer des propriétés personnalisées](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties). Lorsque vous créez une nouvelle transaction, vous devez inclure les propriétés suivantes dans la requête : `dealname`, `dealstage` et, si vous disposez de plusieurs pipelines, `pipeline`. Si aucun pipeline n'est spécifié, le pipeline par défaut sera utilisé. Pour afficher toutes les propriétés disponibles, vous pouvez récupérer une liste des propriétés de transactions de votre compte en effectuant une requête `GET` à `/crm/v3/properties/deals`. Découvrez-en davantage sur l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). > [!WARNING] > > ### Remarque : > > Vous devez utiliser l'ID interne d'une phase de transaction ou d'un pipeline lors de la création d'une transaction via l'API. L'ID interne sera également retourné lorsque vous récupérerez des transactions via l'API. Vous pouvez trouver l'ID interne d'une phase de transaction ou d'un pipeline dans les [paramètres de votre pipeline de transactions.](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines#edit-or-delete-pipelines) Par exemple, pour créer une nouvelle transaction, votre requête peut ressembler à ce qui suit : ```json theme={null} { "properties": { "amount": "1500.00", "closedate": "2019-12-07T16:50:06.678Z", "dealname": "New deal", "pipeline": "default", "dealstage": "contractsent", "hubspot_owner_id": "910901", "hs_all_collaborator_owner_ids": ";12345678;9101112" } } ``` ### Associations Lorsque vous créez une nouvelle transaction, vous pouvez également associer la transaction à des [fiches d'informations](https://knowledge.hubspot.com/fr/records/associate-records) ou [activités](https://knowledge.hubspot.com/fr/records/associate-activities-with-records) existantes dans un objet `associations`. Par exemple, pour associer une nouvelle transaction à un contact et une entreprise existants, votre requête ressemblerait à ce qui suit : ```json theme={null} { "properties": { "amount": "1500.00", "closedate": "2019-12-07T16:50:06.678Z", "dealname": "New deal", "pipeline": "default", "dealstage": "contractsent", "hubspot_owner_id": "910901" }, "associations": [ { "to": { "id": 201 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 5 } ] }, { "to": { "id": 301 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 3 } ] } ] } ``` Dans l'objet `associations`, vous devez ajouter les éléments suivants : | Paramètre | Description | | - | - | | `to` | La fiche d'informations ou l'activité à laquelle vous souhaitez associer la transaction, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre la transaction et la fiche d'informations/l'activité. Inclut `associationCategory` et `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | ## Récupérer des transactions Vous pouvez récupérer des transactions individuellement ou par lots. * Pour récupérer une transaction individuelle, effectuez une requête `GET` à `/crm/v3/objects/deals/{dealId}`. * Pour demander une liste de toutes les transactions, effectuez une requête `GET` à `/crm/v3/objects/deals`. Pour ces points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si la transaction demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si la transaction demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | * Pour récupérer un lot de transactions spécifiques par ID de fiche d'informations ou selon une [propriété d'identifiant unique personnalisée](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties), effectuez une requête `POST` à `crm/v3/objects/deals/batch/read`. * Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). * Pour récupérer les transactions en fonction d'une [propriété d'identification unique](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) personnalisée plutôt que de l'ID de la transaction, incluez le paramètre `idProperty` dans le corps de la requête afin de spécifier le nom de la propriété. Ensuite, dans le tableau `inputs`, incluez les valeurs de la propriété de l'identifiant unique plutôt que l'ID. Par exemple, pour récupérer un lot de transactions, votre requête peut ressembler à ce qui suit : ```text get by id.txt theme={null} { "properties": ["dealname", "dealstage", "pipeline"], "inputs": [ { "id": "7891023" }, { "id": "987654" } ] } ``` ```text get by unique property.txt theme={null} { "properties": ["dealname", "dealstage", "pipeline"], "idProperty": "uniqueordernumber", "inputs": [ { "id": "0001111" }, { "id": "0001112" } ] } ``` Pour récupérer les transactions contenant les valeurs actuelles et historiques d'une propriété spécifique, vous pouvez inclure le paramètre `propertiesWithHistory` dans le corps de la requête, comme indiqué ci-dessous. ```json theme={null} { "propertiesWithHistory": ["dealstage"], "inputs": [ { "id": "7891023" }, { "id": "987654" } ] } ``` ## Mettre à jour des transactions Vous pouvez mettre à jour des transactions individuellement ou par lots. Pour les transactions existantes, l'ID de transaction est une valeur unique par défaut que vous pouvez utiliser pour mettre à jour la transaction via l'API, mais vous pouvez aussi identifier des transactions en utilisant des [propriétés d'identifiant unique personnalisées.](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) * Pour mettre à jour une transaction individuelle avec son ID de fiche d'informations, effectuez une requête `PATCH` à `/crm/v3/objects/deals/{dealId}` et incluez les données que vous souhaitez mettre à jour. * Pour mettre à jour plusieurs transactions, effectuez une requête `POST` dans `/crm/v3/objects/deals/batch/update`. Dans le corps de la requête, incluez un tableau avec les identifiants des transactions et les propriétés que vous souhaitez mettre à jour. ### Associer des transactions existantes à des fiches d'informations ou activités Pour associer une transaction à d'autres fiches d'informations de CRM ou à une activité, effectuez une requête `PUT` à `/crm/v3/objects/deals/{dealId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. > [!NOTE] > > Pour récupérer la valeur `associationTypeId`, reportez-vous à [cette liste](/docs/api-reference/crm-associations-v4/guide#association-type-id-values) de valeurs par défaut ou effectuez une requête `GET` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels`. Découvrez-en davantage sur l'association de fiches d'informations avec l'[API des associations](/docs/api-reference/crm-associations-v4/guide). ### Supprimer une association Pour supprimer une association entre une transaction et une fiche d'informations ou une activité, effectuez une requête `DELETE` à l'URL suivante : `/crm/v3/objects/deals/{dealId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. ## Épingler une activité à une fiche d'informations de transaction Vous pouvez épingler une activité à une fiche d'informations de transaction via l'API en incluant le paramètre `hs_pinned_engagement_id` dans la requête. Pour la valeur du paramètre, incluez l'ID de l'activité à épingler, qui peut être récupéré via les [API d'engagement](/docs/api-reference/overview). Vous pouvez épingler une activité par fiche d'informations, et l'activité doit déjà être associée à la transaction avant l'épinglage. Pour définir ou mettre à jour l'activité épinglée d'une transaction, votre requête peut ressembler à : ```json theme={null} { "properties": { "hs_pinned_engagement_id": 123456789 } } ``` Vous pouvez également créer une transaction, l'associer à une activité existante et épingler l'activité dans la même requête. Par exemple : ```json theme={null} { "properties": { "dealname": "New deal", "pipelines": "default", "dealstage": "contractsent", "hs_pinned_engagement_id": 123456789 }, "associations": [ { "to": { "id": 123456789 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 213 } ] } ] } ``` ## Supprimer des transactions Vous pouvez supprimer des transactions individuellement ou par lots, ce qui placera la transaction dans la corbeille dans HubSpot. Vous pourrez ensuite [restaurer la transaction dans HubSpot](https://knowledge.hubspot.com/fr/records/restore-deleted-records). * Pour [supprimer une transaction individuelle](/docs/api-reference/crm-deals-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Fdeals%2F%7Bdealid%7D) avec son ID, effectuez une requête `DELETE` à `/crm/v3/objects/deals/{dealId}`. Aucun corps de requête n'est nécessaire pour cette requête. * Pour [supprimer des transactions par lots](/docs/api-reference/crm-deals-v3/guide#post-%2Fcrm%2Fv3%2Fobjects%2Fdeals%2Fbatch%2Farchive), effectuez une requête `POST` à `/crm/v3/objects/deals/batch/archive`. Dans le corps de la requête, incluez l'ID de la transaction pour les valeurs `id`, comme indiqué dans l'exemple de corps de requête ci-dessous. ```json theme={null} { "inputs": [ { "id": "123456" }, { "id": "7891011" }, { "id": "12123434" } ] } ``` Pour en savoir plus sur la suppression des transactions, consultez la [documentation de référence](/docs/api-reference/crm-deals-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Fdeals%2F%7Bdealid%7D). # Merge two deals with same type Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/merge-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/merge Combinez deux transactions du même type en une seule transaction. > **Supported products** > **Required Scopes** # Deal object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/object-definition # Search for deals using various filters and criteria to retrieve specific records. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/search-deals specs/2026-09/crm-deals-v2026-09.json POST /crm/objects/2026-09/0-3/search Recherchez des transactions à l'aide de critères et de filtres spécifiés. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/deals/update-deal specs/2026-09/crm-deals-v2026-09.json PATCH /crm/objects/2026-09/0-3/{dealId} Effectuez une mise à jour partielle d'un Objet identifié par « {dealId} » ou éventuellement une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {dealId} » fait référence par défaut à l'ID interne de l'objet, tandis que le paramètre de requête « idProperty » se réfère à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/batch/create-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/batch/create Créez un lot d'objets CRM avec des propriétés spécifiées dans votre compte HubSpot. Ce point de terminaison vous permet de créer efficacement plusieurs objets en une seule requête, en renvoyant une copie de chaque objet, y compris leurs identifiants. Il est utile pour les opérations de données en masse où plusieurs objets doivent être créés simultanément. > **Supported products** > **Required Scopes** # Create a discount Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/create-discount specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts Créez un objet CRM avec les propriétés spécifiées et recevez une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM et garantit que vous recevez immédiatement les détails de l'objet créé. > **Supported products** > **Required Scopes** # Delete a discount Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/delete-discount specs/2026-09/crm-discounts-v2026-09.json DELETE /crm/objects/2026-09/discounts/{discountId} Déplacez un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet d'un type spécifié, afin qu'ils ne soient plus utilisés directement, mais conservés dans le système pour une éventuelle restauration future. > **Supported products** > **Required Scopes** # Retrieve a discount Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/get-discount specs/2026-09/crm-discounts-v2026-09.json GET /crm/objects/2026-09/discounts/{discountId} Lisez un objet identifié par « {objectId} ». « {objectId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # Retrieve discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/get-discounts specs/2026-09/crm-discounts-v2026-09.json GET /crm/objects/2026-09/discounts Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant certaines propriétés et associations, et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison prend en charge la pagination via l'utilisation d'un jeton de curseur. > **Supported products** > **Required Scopes** # Discounts API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/guide # Discount object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/object-definition # Update a discount Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/update-discount specs/2026-09/crm-discounts-v2026-09.json PATCH /crm/objects/2026-09/discounts/{discountId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Delete discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/batch/delete-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/batch/archive Archivez un lot d'objets CRM identifiés par leurs ID. Cette opération déplace les objets spécifiés vers les archives, afin qu'ils ne soient plus utilisés directement, mais conservés pour une éventuelle restauration future. Cela est utile pour gérer de grands jeux de données qui ne sont plus nécessaires dans les opérations actives, mais qui peuvent être requis à des fins historiques ou de conformité. > **Supported products** > **Required Scopes** # Retrieve discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/batch/get-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/batch/read Récupérez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets à la fois, vous permettant de spécifier les propriétés à inclure dans la réponse. Il prend en charge le filtrage des objets archivés. > **Supported products** > **Required Scopes** # Update discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/batch/update-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/batch/update Mettre à jour un lot d'objets CRM en spécifiant leurs propriétés. Ce point de terminaison vous permet d'effectuer des mises à jour groupées sur des objets d'un type spécifié, ce qui peut être utile pour synchroniser des données ou appliquer des modifications à plusieurs fiches d'informations de manière efficace. > **Supported products** > **Required Scopes** # Upsert discounts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/batch/upsert-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/batch/upsert Créer ou mettre à jour un lot d'objets CRM en utilisant leurs valeurs de propriété uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, garantissant que les objets existants sont mis à jour et que de nouveaux sont créés si nécessaire. > **Supported products** > **Required Scopes** # Search for a discount Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/discounts/search/search-discounts specs/2026-09/crm-discounts-v2026-09.json POST /crm/objects/2026-09/discounts/search Recherchez des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des requêtes complexes pour récupérer des objets qui correspondent à des conditions spécifiques. Les résultats de la recherche incluent le nombre total d'objets correspondants et les objets eux-mêmes. > **Supported products** > **Required Scopes** # Read a batch of feedback submissions by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/batch/get-feedback-submissions specs/2026-09/crm-feedback-submissions-v2026-09.json POST /crm/objects/2026-09/feedback_submissions/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de spécifier les propriétés que vous souhaitez inclure dans la réponse. Il est utile pour obtenir des informations détaillées sur plusieurs objets en une seule requête, ce qui peut être bénéfique pour l'analyse de données ou les tâches de synchronisation. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/get-feedback-submission specs/2026-09/crm-feedback-submissions-v2026-09.json GET /crm/objects/2026-09/feedback_submissions/{feedbackSubmissionId} Lire un objet identifié par `{objectId}` dans le CRM HubSpot. Par défaut, `{objectId}` fait référence à l'ID interne de l'objet, mais vous pouvez spécifier n'importe quelle valeur de propriété unique à l'aide du paramètre de requête `idProperty`. Personnalisez la réponse en sélectionnant des propriétés spécifiques avec le paramètre de requête `properties`. Ce point de terminaison est utile pour récupérer des informations détaillées sur un objet CRM spécifique, y compris ses propriétés, son historique, ses associations et son statut archivé. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/get-feedback-submissions specs/2026-09/crm-feedback-submissions-v2026-09.json GET /crm/objects/2026-09/feedback_submissions Lire une page d'objets CRM d'un type spécifié. Utilisez le paramètre de requête « propriétés » pour contrôler les propriétés renvoyées. Ce point de terminaison prend en charge la pagination et peut inclure les ID d'objets associés si spécifié. > **Supported products** > **Required Scopes** # Survey Responses API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/guide # Feedback submission object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/object-definition # Search for feedback submissions using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/feedback-submissions/search/search-feedback-submissions specs/2026-09/crm-feedback-submissions-v2026-09.json POST /crm/objects/2026-09/feedback_submissions/search Permet de rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des recherches complexes en spécifiant des groupes de filtres, des options de tri et des propriétés à inclure dans la réponse. Il est utile pour récupérer un sous-ensemble d'objets qui répondent à des conditions spécifiques. > **Supported products** > **Required Scopes** # Create fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/batch/create-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/batch/create Créer un lot d'objets CRM d'un type spécifié dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui simplifie le processus de remplissage de votre CRM avec de nouvelles données. Chaque objet doit avoir les propriétés nécessaires définies, et la réponse inclura les objets créés ainsi que leurs identifiants. > **Supported products** > **Required Scopes** # Delete fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/batch/delete-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/batch/archive Archiver un lot d'objets CRM par leurs identifiants. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui simplifie la gestion de grands ensembles de jeux de données. > **Supported products** > **Required Scopes** # Retrieve fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/batch/get-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui peut aider à optimiser les performances lors de l'utilisation de grands ensembles de données. Vous pouvez spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Update fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/batch/update-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets du type spécifié en une seule requête. Il est utile pour les mises à jour en masse où vous devez modifier les propriétés de plusieurs objets à la fois. Le corps de la requête doit inclure les objets à mettre à jour ainsi que leurs nouvelles valeurs de propriété. > **Supported products** > **Required Scopes** # Upsert fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/batch/upsert-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/batch/upsert Créer ou mettre à jour un lot d'objets CRM en fonction de valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, en veillant à ce que chaque objet soit créé ou mis à jour en fonction de ses propriétés uniques. > **Supported products** > **Required Scopes** # Create a fee Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/create-fee specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees Créez un objet CRM avec les propriétés spécifiées et recevez une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM avec des attributs prédéfinis. La documentation et des exemples pour la création d'objets standard sont disponibles. > **Supported products** > **Required Scopes** # Delete a fee Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/delete-fee specs/2026-09/crm-fees-v2026-09.json DELETE /crm/objects/2026-09/fees/{feeId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son identifiant unique, le retirant ainsi de l'utilisation active tout en conservant la possibilité de le restaurer ultérieurement si nécessaire. > **Supported products** > **Required Scopes** # Retrieve a fee Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/get-fee specs/2026-09/crm-fees-v2026-09.json GET /crm/objects/2026-09/fees/{feeId} Lire un objet identifié par `objectId`. Ce point de terminaison vous permet de récupérer les détails d'un objet CRM spécifique à l'aide de son ID interne ou de toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Vous pouvez contrôler le contenu de la réponse en spécifiant les propriétés souhaitées via le paramètre de requête `properties`. > **Supported products** > **Required Scopes** # Retrieve fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/get-fees specs/2026-09/crm-fees-v2026-09.json GET /crm/objects/2026-09/fees Récupérer une page d'objets CRM d'un type spécifié. Personnaliser la réponse en sélectionnant les propriétés spécifiques à renvoyer à l'aide du paramètre de requête `properties`. Ce point de terminaison prend en charge la pagination et peut inclure les ID d'objets associés si demandé. > **Supported products** > **Required Scopes** # Fees API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/guide # Fee object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/object-definition # Search for fees Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/search/search-fees specs/2026-09/crm-fees-v2026-09.json POST /crm/objects/2026-09/fees/search Effectuer une recherche d'objets CRM d'un type spécifié en utilisant divers filtres et critères. Ce point de terminaison vous permet de récupérer des objets basés sur des propriétés et des conditions spécifiques, offrant une flexibilité dans l'interrogation de vos données CRM. > **Supported products** > **Required Scopes** # Update a fee Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/fees/update-fee specs/2026-09/crm-fees-v2026-09.json PATCH /crm/objects/2026-09/fees/{feeId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Retrieve a forecast type Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/forecasts/forecast-types/get-forecast-type specs/2026-09/crm-forecast-types-v2026-09.json GET /forecast-settings/2026-09/forecast-types/{forecastTypeId} Récupérer un type de prévision spécifique grâce à son ID depuis le compte HubSpot. Ce point de terminaison est utile pour accéder à des informations détaillées sur un type de prévision particulier, définissant les propriétés utilisées dans les calculs de prévision. > **Supported products** # Retrieve forecast types Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/forecasts/forecast-types/get-forecast-types specs/2026-09/crm-forecast-types-v2026-09.json GET /forecast-settings/2026-09/forecast-types Retourne tous les types de prévisions configurés pour le portail. Les types de prévisions définissent les propriétés utilisées pour calculer les prévisions. Ce point de terminaison est utile pour récupérer les différentes configurations de prévisions disponibles dans votre compte HubSpot, ce qui vous permet de comprendre comment les prévisions sont générées en fonction de diverses propriétés. > **Supported products** # Forecasts API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/forecasts/guide # Search for forecasts Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/forecasts/search/search-forecasts specs/2026-09/crm-forecasts-v2026-09.json POST /crm/objects/2026-09/{objectType}/search Recherchez les prévisions existantes dans votre compte HubSpot. Ce point de terminaison vous permet de filtrer et de trier les objets en fonction de divers critères, offrant un moyen flexible de récupérer des données spécifiques. Il est utile pour trouver des objets qui correspondent à certaines propriétés ou conditions. > **Supported products** > **Required Scopes** # Create goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/batch/create-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/batch/create Créez plusieurs objectifs cibles en une seule opération par lot. > **Supported products** > **Required Scopes** # Delete goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/batch/delete-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/batch/archive Archivez plusieurs objectifs cibles en une seule opération par lots à l'aide de leurs identifiants. > **Supported products** > **Required Scopes** # Retrieve goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/batch/get-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/batch/update-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/batch/update Mettez à jour plusieurs objectifs cibles en une seule opération par lots à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. > **Supported products** > **Required Scopes** # Create or update a batch of goal targets by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/batch/upsert-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create a goal target Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/create-goal-target specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets Créez un objectif cible avec les propriétés indiquées et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour créer des objectifs cibles standard sont fournis. > **Supported products** > **Required Scopes** # Delete a goal target Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/delete-goal-target specs/2026-09/crm-goal-targets-v2026-09.json DELETE /crm/objects/2026-09/goal_targets/{goalTargetId} Déplacer un objet identifié par « {goalTargetId} » dans la corbeille. > **Supported products** > **Required Scopes** # Retrieve goal target Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/get-goal-target specs/2026-09/crm-goal-targets-v2026-09.json GET /crm/objects/2026-09/goal_targets/{goalTargetId} Lire un objet identifié par « {goalTargetId} ». « {goalTargetId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Retrieve goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/get-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json GET /crm/objects/2026-09/goal_targets Lire une page d'objetifs cibles. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Goals API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/guide # Goal object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/object-definition # Search for goal targets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/search/search-goal-targets specs/2026-09/crm-goal-targets-v2026-09.json POST /crm/objects/2026-09/goal_targets/search Rechercher des objectifs cibles à l'aide de critères spécifiés. > **Supported products** > **Required Scopes** # Update a goal target Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/update-goal-target specs/2026-09/crm-goal-targets-v2026-09.json PATCH /crm/objects/2026-09/goal_targets/{goalTargetId} Effectue une mise à jour partielle d'un objet identifié par « {goalTargetId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {goalTargetId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/goals/update-goal-target-objectId specs/2026-09/crm-goal-targets-v2026-09.json PATCH /crm/objects/2026-09/goal_targets/{goalTargetId} Effectue une mise à jour partielle d'un objet identifié par « {goalTargetId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {goalTargetId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of invoices Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/batch/create-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/batch/create Créer un lot d'objets CRM avec des propriétés spécifiées et renvoyer les objets créés, y compris leurs identifiants. Ce point de terminaison est utile pour ajouter efficacement plusieurs objets à votre CRM en une seule requête. > **Supported products** > **Required Scopes** # Archive a batch of invoices by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/batch/delete-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/batch/archive Archiver un lot d'objets CRM par leurs ID. Ce point de terminaison vous permet de déplacer plusieurs objets vers l'archive en une seule requête, ce qui peut être utile pour gérer efficacement de grands jeux de données ou effectuer des opérations groupées. > **Supported products** > **Required Scopes** # Read a batch of invoices by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/batch/get-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/batch/read Lisez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui peut être plus efficace que d'effectuer des requêtes individuelles pour chaque objet. La réponse inclut les détails des objets, et vous pouvez spécifier si les objets archivés doivent être inclus. > **Supported products** > **Required Scopes** # Update a batch of invoices by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/batch/update-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets simultanément en fournissant leurs détails dans le corps de la requête. Il est utile pour effectuer des mises à jour groupées de manière efficace. La réponse inclut le statut de chaque opération de mise à jour et toutes les erreurs rencontrées pendant le processus. > **Supported products** > **Required Scopes** # Create or update a batch of invoices by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/batch/upsert-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/batch/upsert Créez ou mettez à jour un lot d'objets CRM en utilisant les valeurs de propriété uniques dans votre compte HubSpot. Cette opération vous permet de gérer efficacement plusieurs objets à la fois, en garantissant que les objets existants sont mis à jour et que de nouveaux objets sont créés si nécessaire. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/create-invoice specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM, vous permettant de définir des propriétés lors de la création. La réponse inclut les détails de l'objet nouvellement créé. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/delete-invoice specs/2026-09/crm-invoices-v2026-09.json DELETE /crm/objects/2026-09/invoices/{invoiceId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique, le rendant inactif sans le supprimer définitivement du système. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/get-invoice specs/2026-09/crm-invoices-v2026-09.json GET /crm/objects/2026-09/invoices/{invoiceId} Lire un objet identifié par `objectId`. L'`objectId` fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Contrôlez ce qui est renvoyé via le paramètre de requête `properties`. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/get-invoices specs/2026-09/crm-invoices-v2026-09.json GET /crm/objects/2026-09/invoices Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés à inclure à l'aide du paramètre de requête « properties ». Ce point de terminaison prend en charge la pagination et peut renvoyer les fiches d'informations archivées si vous le spécifiez. > **Supported products** > **Required Scopes** # Invoices API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/guide # Invoice object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/object-definition # Search for invoices using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/search/search-invoices specs/2026-09/crm-invoices-v2026-09.json POST /crm/objects/2026-09/invoices/search Recherchez des objets CRM d'un type spécifié en utilisant les critères de recherche fournis. Ce point de terminaison permet de spécifier des filtres, le tri et les propriétés à renvoyer dans les résultats de recherche. Il est utile pour récupérer des objets spécifiques basés sur des requêtes complexes. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/update-invoice specs/2026-09/crm-invoices-v2026-09.json PATCH /crm/objects/2026-09/invoices/{invoiceId} Effectuer une mise à jour partielle d'un objet identifié par `objectId`. L'`objectId` fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/invoices/update-invoice-objectId specs/2026-09/crm-invoices-v2026-09.json PATCH /crm/objects/2026-09/invoices/{invoiceId} Effectuer une mise à jour partielle d'un objet identifié par `objectId`. L'`objectId` fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of leads Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/batch/create-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/batch/create Créez plusieurs fiches d'informations de leads en une seule requête en fournissant un lot de données de leads. Ce point de terminaison permet de créer efficacement des leads en les traitant ensemble, ce qui peut être utile pour synchroniser des données provenant d'autres systèmes ou importer des ensembles de données volumineux. > **Supported products** > **Required Scopes** # Archive a batch of leads by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/batch/delete-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/batch/archive Archivez plusieurs leads par leur ID en une seule requête, les déplaçant ainsi vers la corbeille. > **Supported products** > **Required Scopes** # Read a batch of leads by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/batch/get-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update a batch of leads by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/batch/update-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/batch/update Mettez à jour plusieurs fiches d'informations de leads à l'aide de leurs ID internes ou de leurs valeurs de propriété uniques. Ce point de terminaison permet le traitement par lots des mises à jour, où les propriétés de chaque lead peuvent être modifiées en fonction des informations fournies. Assurez-vous que les propriétés mises à jour existent bien dans les objets de leads afin d'éviter toute erreur. > **Supported products** > **Required Scopes** # Create or update a batch of leads by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/batch/upsert-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/create-lead specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads Créez un lead avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de leads standard sont fournis. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/delete-lead specs/2026-09/crm-leads-v2026-09.json DELETE /crm/objects/2026-09/leads/{leadsId} Déplacer un objet identifié par « {leadsId} » dans la corbeille. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/get-lead specs/2026-09/crm-leads-v2026-09.json GET /crm/objects/2026-09/leads/{leadsId} Lire un objet identifié par « {leadsId} ». « {leadsId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/get-leads specs/2026-09/crm-leads-v2026-09.json GET /crm/objects/2026-09/leads Lire une page de leads. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Leads API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/guide # Lead object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/object-definition # Search for leads Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/search/search-leads specs/2026-09/crm-leads-v2026-09.json POST /crm/objects/2026-09/leads/search Effectuez une recherche de leads en fonction des groupes de filtres, des propriétés et des options de tri fournis. La requête permet la pagination et peut renvoyer jusqu'à 200 résultats par page. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/leads/update-lead specs/2026-09/crm-leads-v2026-09.json PATCH /crm/objects/2026-09/leads/{leadsId} Effectue une mise à jour partielle d'un objet identifié par « {leadsId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {leadsId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of line items Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/batch/create-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/batch/create Créez un lot d'objets CRM d'un type spécifié dans votre compte HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui peut être utile pour un import efficace de données ou leur synchronisation avec des systèmes externes. La réponse inclura les détails des objets créés, y compris leurs identifiants. > **Supported products** > **Required Scopes** # Archive a batch of line items by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/batch/delete-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/batch/archive Archivez un lot d'objets CRM par leur ID. Ce point de terminaison vous permet de déplacer plusieurs objets d'un type spécifié vers la corbeille en une seule requête, ce qui peut être utile pour la gestion des données en masse et les opérations de nettoyage. > **Supported products** > **Required Scopes** # Read a batch of line items by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/batch/get-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/batch/read Récupérez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de spécifier les propriétés et les historiques de propriétés à renvoyer pour chaque objet. Il prend en charge le filtrage des résultats pour inclure uniquement les objets archivés si nécessaire. > **Supported products** > **Required Scopes** # Update a batch of line items by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/batch/update-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets simultanément en fournissant leurs propriétés mises à jour. Il est utile pour les mises à jour en masse où les modifications doivent être appliquées à plusieurs fiches d'informations à la fois. > **Supported products** > **Required Scopes** # Create or update a batch of line items by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/batch/upsert-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/batch/upsert Créer ou mettre à jour un lot d'objets CRM en utilisant leurs valeurs de propriété uniques. Ce point de terminaison permet une gestion efficace de plusieurs objets en une seule requête, garantissant que les objets existants sont mis à jour et que de nouveaux sont créés si nécessaire. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/create-line-item specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison vous permet de créer des objets standard dans votre compte HubSpot, et fournit de la documentation et des exemples pour le processus. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/delete-line-item specs/2026-09/crm-line-items-v2026-09.json DELETE /crm/objects/2026-09/line_items/{lineItemId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique, le retirant ainsi de l'utilisation active tout en conservant la possibilité de le restaurer ultérieurement si nécessaire. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/get-line-item specs/2026-09/crm-line-items-v2026-09.json GET /crm/objects/2026-09/line_items/{lineItemId} Lisez un objet identifié par `objectId` dans votre compte HubSpot. Par défaut, `objectId` fait référence à l'ID d'objet interne, mais vous pouvez spécifier une propriété unique à l'aide du paramètre de requête `idProperty`. Utilisez le paramètre de requête `properties` pour contrôler les propriétés renvoyées dans la réponse. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/get-line-items specs/2026-09/crm-line-items-v2026-09.json GET /crm/objects/2026-09/line_items Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés souhaitées via des paramètres de requête. Ce point de terminaison est utile pour récupérer une liste d'objets CRM, tels que des contacts ou des transactions, avec un filtrage et une pagination facultatifs. > **Supported products** > **Required Scopes** # API du CRM | Lignes de produit Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/guide Lorsqu'un produit est associé à une transaction, il devient une ligne de produit. Les points de terminaison des lignes de produit permettent de gérer et de synchroniser ces données. > **[Run in Postman](https://app.getpostman.com/run-collection/c6e6832eb67946d66554)** > **Exigences de portée** Dans HubSpot, les lignes de produit sont des instances individuelles de [produits](/docs/api-reference/crm-products-v3/guide). Lorsqu'un produit est associé à une transaction, il devient une ligne de produit. Vous pouvez créer des lignes de produit propres à un devis, qui ne seront pas ajoutées à votre bibliothèque de produits. Les points de terminaison des lignes de produit vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes. **Exemple de cas d'utilisation :** lors de la création d'un ensemble de [devis](/docs/api-reference/crm-quotes-v3/guide) que les représentants commerciaux enverront à de potentiels acheteurs, vous pouvez utiliser cette API pour créer des lignes de produit autonomes pour chaque devis ainsi que des lignes de produit associées à des produits existants. ## Exigences des domaines En fonction des points de terminaison que vous prévoyez d'utiliser, vous devrez autoriser les domaines suivants : * `crm.objects.line_items.read` : permet de récupérer les données de ligne de produit. * `crm.objects.line_items.write` : permet de créer et de mettre à jour des lignes de produits. * `tax_rates.read` : permet de récupérer les taux de taxe que vous avez configurés dans votre compte. ## Créer une ligne de produit Pour créer une ligne de produit, effectuez une requête `POST` à `/crm/v3/objects/line_items`. Dans le corps de l'article, incluez les détails de la ligne de produit, tels que le nom, la quantité et le prix. Vous pouvez également inclure des données supplémentaires dans le corps de la requête : * Pour créer une ligne de produit basée sur un produit existant (créé via l'[API de produits](/docs/api-reference/crm-products-v3/guide) ou [dans HubSpot](https://knowledge.hubspot.com/fr/products/create-and-manage-products)), incluez `hs_product_id` dans le corps de l'article. * Pour inclure le [taux d'imposition](#retrieve-tax-rates) de votre ligne de produit, indiquez son ID comme `hs_tax_rate_group_id` dans le champ `properties` du corps de la requête. * Vous pouvez également associer la ligne de produit avec des transactions, des devis, des factures, des liens de paiement ou des abonnements en incluant un tableau `associations` dans le corps de l'article. Par exemple, le corps d'article ci-dessous créerait une ligne de produit intitulée « Nouvelle ligne de produit autonome » associée à une transaction (ID : `12345`). ```js theme={null} { "properties": { "price": 10, "quantity": 1, "name": "New standalone line item", "hs_tax_rate_group_id": "2148420997" }, "associations": [ { "to": { "id": 12345 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 20 } ] } ] } ``` > [!WARNING] > > ### Remarque : > > * Les lignes de produit appartiennent à un seul objet parent. Si vous associez des objets, les lignes de produit doivent être individuelles à chaque objet. Par exemple, si vous créez une transaction et un devis, vous devez créer un ensemble de lignes de produit pour la transaction et un autre ensemble pour le devis. Cela aidera à rationaliser les données CRM entre les objets et à prévenir la perte de données inattendue lorsque vous devez modifier des lignes de produit (par exemple, la suppression d'un devis supprimera les lignes de produit du devis, et si ces lignes de produit sont associées à une transaction, les lignes de produit des transactions seront également supprimées). > * La valeur `price` spécifiée dans le champ `properties` ne peut pas être négative. > * La propriété *Durée* des lignes de produit (`hs_recurring_billing_period`) accepte les [formats de période ISO-8601](https://docs.oracle.com/javase/8/docs/api/java/time/Period.html) de PnYnMnD et PnW. ## Récupérer une ligne de produit Vous pouvez récupérer des lignes de produit de façon individuelle ou en masse. * Pour récupérer une ligne de produit spécifique, effectuez une requête `GET` à `/crm/v3/objects/line_items/{lineItemId}` où `lineItemId` est l'ID de la ligne de produit. * Pour récupérer toutes les lignes de produit, effectuez une requête `GET` à `/crm/v3/objects/line_items`. Vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si l'une des propriétés spécifiées n'est pas présente sur les objets demandés, elle sera ignorée. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés à renvoyer avec un historique de leurs précédentes valeurs. Si l'une des propriétés spécifiées n'est pas présente sur les objets demandés, elle sera ignorée. | ## Mettre à jour une ligne de produit Pour mettre à jour une ligne de produit, effectuez une requête `PATCH` à `/crm/v3/objects/line_items/{lineItemId}` où `lineItemId` est l'ID de la ligne de produit. Dans le corps d'article, incluez les valeurs de propriété que vous souhaitez mettre à jour. Vous ne pouvez pas mettre à jour des associations via cette méthode. Vous devrez plutôt utiliser l'[API des associations](/docs/api-reference/crm-associations-v4/guide). Par exemple, votre corps de requête peut ressembler aux éléments suivants : ```js theme={null} { "properties": { "price": 25, "quantity": 3, "name": "Updated line item" } } ``` ## Supprimer une ligne de produit Pour supprimer une ligne de produit, effectuez une requête `DELETE` à `/crm/v3/objects/line_items/{lineItemId}` où `lineItemId` est l'ID de la ligne de produit. ## Propriétés des lignes de produit Lors de la gestion de vos données de ligne de produit, vous pouvez utiliser certaines des propriétés communes dans le tableau ci-dessous. Pour obtenir toutes les propriétés des lignes de produit, effectuez une requête `GET` à `/crm/v3/properties/line_item`. Découvrez-en davantage sur l'utilisation de l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). | Nom de la propriété | Libellé dans l'interface utilisateur | Description | | - | - | - | | `name` | Nom | Le nom de la ligne de produit | | `description` | Description | Description complète du produit | | `hs_sku` | SKU | Identifiant de produit unique | | `hs_recurring_billing_start_date` | Date de début de facturation | Date de début de facturation récurrente pour une ligne de produit | | `hs_recurring_billing_end_date` | Date de fin de facturation | Date de fin de facturation récurrente pour un article | | `recurringbillingfrequency` | Fréquence de facturation | La fréquence à laquelle une ligne de produit avec facturation récurrente est facturé. Elle informe le calcul des prix pour les transactions et les devis. Les lignes de produit avec facturation unique ne sont pas incluses. | | `quantity` | Quantité | Combien d'unités d'un produit sont incluses dans cette ligne de produit | | `price` | Prix unitaire | Le coût du produit | | `amount` | Prix net | Le coût total de la ligne de produit (c'est-à-dire la quantité multipliée par le prix unitaire) | | `hs_line_item_currency_code` | Devise | Code de devise pour la ligne de produit | ## Récupérer les taux d'imposition Vous pouvez appliquer un taux d'imposition à des lignes de produits individuelles (par exemple, une taxe sur les ventes de 6,26 % en Allemagne). Une fois que vous avez [configuré votre bibliothèque de taux d'imposition](https://knowledge.hubspot.com/fr/payments/set-up-automated-tax-and-tax-rates#add-a-tax-rate-to-the-tax-library) dans votre compte HubSpot, vous pouvez faire une requête `GET` à `/tax-rates/v1/tax-rates` pour récupérer tous les taux d'imposition, ou `/tax-rates/v1/tax-rates/{taxRateId}` pour récupérer un taux d'imposition par son ID. Votre application devra autoriser la portée `tax_rates.read` à exécuter cette requête. La réponse sera au format suivant : ```json theme={null} { "name": "MA Sales tax 2025", "percentageRate": 6.25 "label": "Sales Tax", "active": true, "id": "2148420997", "createdAt": "2024-12-12T23:20:39.923Z", "updatedAt": "2024-12-12T23:20:39.923Z" } ``` Chaque objet de taux d'imposition comprendra les propriétés suivantes : | Type de propriété | Description | | - | - | | `name` | Le descripteur interne du taux d'imposition. | | `percentageRate` | La valeur du taux d'imposition, exprimée en pourcentage. | | `label` | Le descripteur du taux d'imposition destiné à l'acheteur, affiché sur le devis, la facture ou d'autres objets parents. | | `active` | Un booléen qui indique si le taux d'imposition peut être appliqué à un nouveau devis ou à une nouvelle facture. Vous pouvez définir `false` pour un taux d'imposition de l'année précédente qui n'est plus applicable. | | `id` | L'ID du taux d'imposition. | | `createdAt` | Un horodatage ISO 8601 indiquant la date de création du taux d'imposition. | | `updatedAt` | Un horodatage ISO 8601 indiquant la date de la dernière mise à jour du taux d'imposition. | Une fois que vous avez l'identifiant du taux d'imposition que vous souhaitez appliquer, indiquez ce `id` pour le `hs_tax_rate_group_id` dans le champ `properties` lors de la création d'une ligne de produit. Pour en savoir plus sur la création de lignes de produits, reportez-vous à la [section ci-dessus](#create-a-line-item). # Line item object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/object-definition # Search for line items using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/search/search-line-items specs/2026-09/crm-line-items-v2026-09.json POST /crm/objects/2026-09/line_items/search Recherchez des objets CRM d'un type spécifié en utilisant divers filtres et critères. Ce point de terminaison vous permet d'effectuer des recherches complexes et de récupérer les objets qui correspondent aux conditions spécifiées. Il est utile pour trouver des fiches d'informations spécifiques basées sur des valeurs de propriété ou d'autres attributs. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/line-items/update-line-item specs/2026-09/crm-line-items-v2026-09.json PATCH /crm/objects/2026-09/line_items/{lineItemId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of listings Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/batch/create-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/create Créer un lot d'objets CRM pour un type d'objet spécifié dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui peut être utile pour ajouter efficacement de grandes quantités de données. La réponse inclura les objets créés, chacun avec son ID unique. > **Supported products** > **Required Scopes** # Archive a batch of listings by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/batch/delete-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/archive Archivez un lot d'objets CRM par leurs ID. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui simplifie la gestion de grands ensembles de jeux de données. > **Supported products** > **Required Scopes** # Read a batch of listings by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/batch/get-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/read Lisez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de récupérer plusieurs objets en une seule requête, ce qui peut être utile pour gérer efficacement de grands jeux de données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of listings by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/batch/update-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois, ce qui simplifie le processus de mise à jour des données. Il renvoie un statut indiquant le succès ou l'échec de l'opération, et peut gérer les succès partiels avec des informations d'erreur détaillées si certaines mises à jour échouent. > **Supported products** > **Required Scopes** # Create or update a batch of listings by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/batch/upsert-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/upsert Créez ou mettez à jour un lot d'objets CRM en fonction de valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, en garantissant que les objets sont créés ou mis à jour en fonction de leurs identifiants uniques. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/create-listing specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420 Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison vous permet de créer des objets standard dans votre système CRM, en fournissant de la documentation et des exemples pour vous guider. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/delete-listing specs/2026-09/crm-listings-v2026-09.json DELETE /crm/objects/2026-09/0-420/{listingId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son identifiant unique, le retirant ainsi de l'utilisation active tout en le conservant dans le système pour une éventuelle récupération ou référence. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/get-listing specs/2026-09/crm-listings-v2026-09.json GET /crm/objects/2026-09/0-420/{listingId} Lisez un objet identifié par « {objectId} ». Par défaut, « {objectId} » fait référence à l'ID d'objet interne, mais il peut également faire référence à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler les données renvoyées à l'aide du paramètre de requête « properties ». Ce point de terminaison est utile pour récupérer des informations détaillées sur un objet spécifique, y compris ses propriétés et ses associations. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/get-listings specs/2026-09/crm-listings-v2026-09.json GET /crm/objects/2026-09/0-420 Lire une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés souhaitées via des paramètres de requête. Ce point de terminaison prend en charge la pagination et peut inclure les valeurs de propriété historiques et les associations si cela est demandé. > **Supported products** > **Required Scopes** # Listings API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/guide # Search for listings using various criteria and filters. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/search/search-listings specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/search Rechercher des objets CRM d'un type spécifié en utilisant une variété de filtres et de critères. Ce point de terminaison vous permet d'effectuer des recherches complexes sur les objets CRM en spécifiant des groupes de filtres, des options de tri et des propriétés à inclure dans les résultats. Il est utile pour récupérer des ensembles de données spécifiques de votre CRM basés sur des conditions de recherche détaillées. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/update-listing specs/2026-09/crm-listings-v2026-09.json PATCH /crm/objects/2026-09/0-420/{listingId} Effectuer une mise à jour partielle d'un objet identifié par `objectId`. L'`objectId` fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/listings/update-listing-objectId specs/2026-09/crm-listings-v2026-09.json PATCH /crm/objects/2026-09/0-420/{listingId} Effectuer une mise à jour partielle d'un objet identifié par `objectId`. L'`objectId` fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête `idProperty`. Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create tag Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/create-object-tag specs/2026-09/crm-object-tags-v2026-09.json POST /crm/object-tags/2026-09/{objectTypeId} Créer une nouvelle balise d'objet CRM pour un type d'objet spécifié dans votre compte HubSpot. Ce point de terminaison vous permet de définir des propriétés telles que le nom, la couleur et les critères de filtre pour la balise. Il est utile pour catégoriser et organiser les objets CRM en fonction de critères personnalisés. > **Supported products** > **Required Scopes** # Retrieve Tag Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/get-object-tag specs/2026-09/crm-object-tags-v2026-09.json GET /crm/object-tags/2026-09/{objectTypeId}/{tagId} Récupérer une balise d'objet CRM spécifique à l'aide de ses identifiants uniques. Ce point de terminaison est utile pour obtenir des détails sur une balise particulière associée à un type d'objet CRM, ce qui peut aider à gérer ou à analyser les données balisées au sein de votre compte HubSpot. > **Supported products** > **Required Scopes** # Retrieve tags Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/get-object-tags specs/2026-09/crm-object-tags-v2026-09.json GET /crm/object-tags/2026-09/{objectTypeId} Récupérer les balises d'objet CRM pour un type d'objet spécifié dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux balises associées à un type d'objet particulier, ce qui peut être utile pour catégoriser et gérer efficacement les données CRM. > **Supported products** > **Required Scopes** # Object Tags API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/guide # Update tag (Partial) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/partially-update-object-tag specs/2026-09/crm-object-tags-v2026-09.json PATCH /crm/object-tags/2026-09/{objectTypeId}/{tagId} Mettre à jour une balise d'objet CRM existante dans votre compte HubSpot. Ce point de terminaison vous permet de modifier les propriétés d'une balise spécifique identifiée par son tagId et son objectTypeId. Utilisez-le pour modifier les attributs de la balise tels que la couleur, la description ou les filtres associés. > **Supported products** > **Required Scopes** # Delete Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/delete-object-tag specs/2026-09/crm-object-tags-v2026-09.json DELETE /crm/object-tags/2026-09/{objectTypeId}/{tagId} Supprime une balise d'objet CRM spécifique identifiée par l'ID de son type d'objet et l'ID de la balise. Cette opération supprimera la balise du système, et elle ne sera plus disponible pour utilisation ou référence. > **Supported products** > **Required Scopes** # Update tag (Replace) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/object-tags/update-object-tag specs/2026-09/crm-object-tags-v2026-09.json PUT /crm/object-tags/2026-09/{objectTypeId}/{tagId} Mettre à jour une balise d'objet CRM existante dans votre compte HubSpot. Cette opération vous permet de modifier les propriétés d'une balise identifiée par son objectTypeId et son tagId. Utilisez ce point de terminaison pour modifier les détails de la balise, tels que le nom, la couleur et les filtres associés. > **Supported products** > **Required Scopes** # Create a batch of objects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/batch/create-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/create > **Supported products** > **Required Scopes** # Archive a batch of objects by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/batch/delete-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/archive > **Supported products** > **Required Scopes** # Read a batch of objects by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/batch/get-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/read Retrieve records by record ID or include the `idProperty` parameter to retrieve records by a custom unique value property. > **Supported products** > **Required Scopes** # Update a batch of objects by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/batch/update-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/update > **Supported products** > **Required Scopes** # Create or update a batch of objects by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/batch/upsert-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/upsert Create or update records identified by a unique property value as specified by the `idProperty` query param. `idProperty` query param refers to a property whose values are unique for the object. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/create-object specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType} Create a CRM object with the given properties and return a copy of the object, including the ID. Documentation and examples for creating standard objects is provided. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/delete-object specs/2026-09/crm-objects-v2026-09.json DELETE /crm/objects/2026-09/{objectType}/{objectId} Move an Object identified by `{objectId}` to the recycling bin. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/get-object specs/2026-09/crm-objects-v2026-09.json GET /crm/objects/2026-09/{objectType}/{objectId} Read an Object identified by `{objectId}`. `{objectId}` refers to the internal object ID by default, or optionally any unique property value as specified by the `idProperty` query param. Control what is returned via the `properties` query param. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/get-objects specs/2026-09/crm-objects-v2026-09.json GET /crm/objects/2026-09/{objectType} Read a page of objects. Control what is returned via the `properties` query param. > **Supported products** > **Required Scopes** # Search records Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/search/search-objects specs/2026-09/crm-objects-v2026-09.json POST /crm/objects/2026-09/{objectType}/search > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/objects/update-object specs/2026-09/crm-objects-v2026-09.json PATCH /crm/objects/2026-09/{objectType}/{objectId} Perform a partial update of an Object identified by `{objectId}`or optionally a unique property value as specified by the `idProperty` query param. `{objectId}` refers to the internal object ID by default, and the `idProperty` query param refers to a property whose values are unique for the object. Provided property values will be overwritten. Read-only and non-existent properties will result in an error. Properties values can be cleared by passing an empty string. > **Supported products** > **Required Scopes** # Create a batch of orders Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/batch/create-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/batch/create Créer un lot d'objets CRM d'un type spécifié dans votre compte HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui peut être utile pour les imports de données en masse ou la synchronisation de données provenant de systèmes externes. La réponse inclura les objets créés ainsi que leurs identifiants. > **Supported products** > **Required Scopes** # Archive a batch of orders by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/batch/delete-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/batch/archive Archive un lot d'objets CRM identifiés par leurs ID. Cette opération déplace les objets spécifiés vers la corbeille, les archivant ainsi. Elle est utile pour gérer de grands ensembles d'objets qui doivent être archivés simultanément. > **Supported products** > **Required Scopes** # Read a batch of orders by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/batch/get-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/batch/read Récupérez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour obtenir plusieurs objets en une seule requête, ce qui peut améliorer les performances et réduire le nombre d'appels d'API nécessaires. La réponse peut inclure des objets archivés, si vous le spécifiez. > **Supported products** > **Required Scopes** # Update a batch of orders by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/batch/update-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/batch/update Mettre à jour un lot d'objets CRM spécifiés par leur type. Ce point de terminaison vous permet de modifier plusieurs objets en une seule requête, garantissant des mises à jour efficaces de vos données CRM. Le corps de la requête doit inclure les objets à mettre à jour ainsi que leurs propriétés. > **Supported products** > **Required Scopes** # Create or update a batch of orders by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/batch/upsert-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/batch/upsert Créez ou mettez à jour un lot d'objets CRM en fonction de valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement de grands ensembles d'objets en créant de nouvelles entrées ou en mettant à jour celles qui existent déjà, le tout en une seule requête. Il est particulièrement utile pour synchroniser les données de systèmes externes avec HubSpot. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/create-order specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders Créez un objet du CRM avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création d'objets standard sont fournis. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/delete-order specs/2026-09/crm-orders-v2026-09.json DELETE /crm/objects/2026-09/orders/{orderId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son type et son identifiant unique, le retirant ainsi de l'utilisation active tout en conservant la possibilité de le restaurer ultérieurement si nécessaire. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/get-order specs/2026-09/crm-orders-v2026-09.json GET /crm/objects/2026-09/orders/{orderId} Lisez un objet identifié par « objectId ». Par défaut, « objectId » fait référence à l'ID d'objet interne, mais il peut s'agir de toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler le contenu de la réponse à l'aide du paramètre de requête « properties ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/get-orders specs/2026-09/crm-orders-v2026-09.json GET /crm/objects/2026-09/orders Permet de lire une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et le statut archivé via les paramètres de requête. Ce point de terminaison prend en charge la pagination pour naviguer à travers de grands ensembles d'objets. > **Supported products** > **Required Scopes** # Orders API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/guide # Merge two orders Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/merge/merge-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/merge Fusionner deux objets CRM du même type au sein de votre compte HubSpot. Cette opération combine les propriétés et les associations des objets spécifiés en un seul objet, identifié par l'ID de l'objet principal. Utilisez ce point de terminaison pour consolider les fiches d'informations en double ou unifier les données. > **Supported products** > **Required Scopes** # Order object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/object-definition # Search for orders in the CRM using various filters and sorting options to retrieve specific order data. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/search/search-orders specs/2026-09/crm-orders-v2026-09.json POST /crm/objects/2026-09/orders/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison permet de récupérer des objets en fonction de propriétés et de conditions spécifiques, offrant une flexibilité dans l'interrogation de vos données CRM. Les résultats de la recherche incluent le nombre total d'objets correspondant aux critères. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/update-order specs/2026-09/crm-orders-v2026-09.json PATCH /crm/objects/2026-09/orders/{orderId} Effectuez une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/orders/update-order-objectId specs/2026-09/crm-orders-v2026-09.json PATCH /crm/objects/2026-09/orders/{orderId} Effectuez une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Les valeurs de propriété fournies seront écrasées, tandis que les propriétés en lecture seule et inexistantes seront ignorées. Les propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Retrieve a batch of partner client objects. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/batch/get-partner-clients specs/2026-09/crm-partner-clients-v2026-09.json POST /crm/objects/2026-09/partner_clients/batch/read Récupérez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, permettant une récupération efficace des données. La réponse inclut les détails des objets, et vous pouvez spécifier si les objets archivés doivent être inclus. > **Supported products** > **Required Scopes** # Retrieve a partner client Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/get-partner-client specs/2026-09/crm-partner-clients-v2026-09.json GET /crm/objects/2026-09/partner_clients/{partnerClientId} Lisez un objet identifié par « objectId » . Par défaut, « objectId » fait référence à l'ID interne de l'objet, mais il peut également faire référence à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Vous pouvez contrôler les données renvoyées en spécifiant le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # Retrieve partner clients Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/get-partner-clients specs/2026-09/crm-partner-clients-v2026-09.json GET /crm/objects/2026-09/partner_clients Récupérez une page d'objets CRM à partir d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison prend en charge la pagination pour naviguer à travers de grands jeux de données. > **Supported products** > **Required Scopes** # Search for partner clients Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/search/search-partner-clients specs/2026-09/crm-partner-clients-v2026-09.json POST /crm/objects/2026-09/partner_clients/search Recherchez des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des requêtes complexes pour récupérer des objets CRM basés sur des propriétés ou des conditions spécifiques. Il est utile pour trouver des objets qui répondent à certains critères au sein de votre compte HubSpot. > **Supported products** > **Required Scopes** # Update a partner client Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/update-partner-client specs/2026-09/crm-partner-clients-v2026-09.json PATCH /crm/objects/2026-09/partner_clients/{partnerClientId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update properties of a specific partner client. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-clients/update-partner-client-objectId specs/2026-09/crm-partner-clients-v2026-09.json PATCH /crm/objects/2026-09/partner_clients/{partnerClientId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Read a batch of partner services by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/batch/get-partner-services specs/2026-09/crm-partner-services-v2026-09.json POST /crm/objects/2026-09/partner_services/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of partner services by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/batch/update-partner-services specs/2026-09/crm-partner-services-v2026-09.json POST /crm/objects/2026-09/partner_services/batch/update Mettre à jour un lot d’objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs propriétés. Il est utile pour effectuer des mises à jour groupées des données CRM de manière efficace. La réponse inclura les objets mis à jour et toutes les erreurs rencontrées pendant le processus de mise à jour. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/get-partner-service specs/2026-09/crm-partner-services-v2026-09.json GET /crm/objects/2026-09/partner_services/{partnerServiceId} Lisez un objet identifié par « {objectId} ». « {objectId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/get-partner-services specs/2026-09/crm-partner-services-v2026-09.json GET /crm/objects/2026-09/partner_services Lire une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés à inclure dans la réponse. Ce point de terminaison est utile pour récupérer une liste d'objets avec des détails spécifiques, et il prend en charge la pagination pour les grands jeux de données. > **Supported products** > **Required Scopes** # Search for partner services using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/search/search-partner-services specs/2026-09/crm-partner-services-v2026-09.json POST /crm/objects/2026-09/partner_services/search Effectuer une recherche sur les objets CRM d'un type spécifié. Ce point de terminaison vous permet de filtrer et de récupérer des objets en fonction de divers critères définis dans le corps de la requête. Il est utile pour trouver des fiches d'informations spécifiques ou des ensembles de fiches d'informations qui correspondent à vos paramètres de recherche. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/update-partner-service specs/2026-09/crm-partner-services-v2026-09.json PATCH /crm/objects/2026-09/partner_services/{partnerServiceId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/partner-services/update-partner-service-objectId specs/2026-09/crm-partner-services-v2026-09.json PATCH /crm/objects/2026-09/partner_services/{partnerServiceId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Batch retrieve price book items Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-book-items/batch/get-price-book-items specs/2026-09/crm-price-book-items-crm-reads-api-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Retrieve a price book item Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-book-items/get-price-book-item specs/2026-09/crm-price-book-items-crm-reads-api-v2026-09.json GET /crm/objects/2026-09/{objectType}/{objectId} Lisez un objet identifié par « {objectId} ». « {objectId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # Retrieve price book items Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-book-items/get-price-book-items specs/2026-09/crm-price-book-items-crm-reads-api-v2026-09.json GET /crm/objects/2026-09/{objectType} Récupérer une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison est utile pour récupérer une liste d'objets avec des attributs ou des associations spécifiques. > **Supported products** > **Required Scopes** # Batch retrieve price books Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-books/batch/get-price-books specs/2026-09/crm-price-books-crm-reads-api-v2026-09.json POST /crm/objects/2026-09/{objectType}/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de spécifier les propriétés et leur historique à inclure dans la réponse. Il est utile pour récupérer efficacement les données de plusieurs objets en une seule requête. > **Supported products** > **Required Scopes** # Retrieve a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-books/get-price-book specs/2026-09/crm-price-books-crm-reads-api-v2026-09.json GET /crm/objects/2026-09/{objectType}/{objectId} Lire un objet identifié par « {objectId} ». Par défaut, « {objectId} »fait référence à l'ID d'objet interne, mais vous pouvez spécifier toute valeur de propriété unique à l'aide du paramètre de requête `idProperty`. Utilisez le paramètre de requête « properties » pour contrôler les propriétés renvoyées dans la réponse. > **Supported products** > **Required Scopes** # Retrieve price books Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-books/get-price-books specs/2026-09/crm-price-books-crm-reads-api-v2026-09.json GET /crm/objects/2026-09/{objectType} Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés, les associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison prend en charge la pagination via l'utilisation d'un jeton de curseur. > **Supported products** > **Required Scopes** # CRM API | Price books Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/price-books/guide # Create a batch of products Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/batch/create-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/batch/create Créer un lot d'objets CRM avec les propriétés spécifiées. Ce point de terminaison permet la création de plusieurs objets en une seule requête, ce qui peut être utile pour importer efficacement de grands jeux de données ou synchroniser des données provenant de systèmes externes. La réponse inclut les objets créés avec leurs identifiants. > **Supported products** > **Required Scopes** # Archive a batch of products by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/batch/delete-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/batch/archive Archiver un lot d'objets CRM en fonction de leur ID. Ce point de terminaison est utile pour gérer de grands ensembles d'objets qui doivent être archivés simultanément. L'opération ne renvoie aucun contenu en cas de succès, ce qui indique que les objets ont été archivés avec succès. > **Supported products** > **Required Scopes** # Read a batch of products by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/batch/get-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/batch/read Lire un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui permet une récupération efficace des données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of products by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/batch/update-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/batch/update Mettre à jour un lot d’objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de mettre à jour plusieurs objets d’un type spécifié en fournissant leurs propriétés dans le corps de la requête. Il est utile pour effectuer des mises à jour groupées d’objets sans avoir à les mettre à jour individuellement. > **Supported products** > **Required Scopes** # Create or update a batch of products by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/batch/upsert-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/batch/upsert Créer ou mettre à jour un lot d’objets CRM à l’aide de valeurs de propriétés uniques. Ce point de terminaison permet une gestion efficace de plusieurs objets en une seule requête, garantissant que chaque objet est créé ou mis à jour en fonction de ses identifiants uniques. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/create-product specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products Créez un objet CRM avec les propriétés spécifiées et renvoyez une copie de l'objet, y compris son ID. Ce point de terminaison vous permet de créer des objets standard dans votre compte HubSpot, en fournissant de la documentation et des exemples pour vous guider. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/delete-product specs/2026-09/crm-products-v2026-09.json DELETE /crm/objects/2026-09/products/{productId} Déplacer un objet identifié par `{objectId}` vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son identifiant unique, le retirant ainsi de l'utilisation active tout en le conservant dans le système à des fins de récupération ou d'audit potentielles. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/get-product specs/2026-09/crm-products-v2026-09.json GET /crm/objects/2026-09/products/{productId} Lisez un objet identifié par « objectId ». Par défaut, « objectId » fait référence à l'ID d'objet interne, ou, de manière facultative, à toute valeur de propriété unique comme spécifié par le paramètre de requête « idProperty ». Vous pouvez contrôler le contenu de la réponse en spécifiant les propriétés souhaitées à l'aide du paramètre de requête « properties ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/get-products specs/2026-09/crm-products-v2026-09.json GET /crm/objects/2026-09/products Récupérer une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant certaines propriétés, associations et si les fiches d'informations archivées doivent être incluses. Ce point de terminaison est utile pour récupérer une liste d'objets avec des attributs et des associations spécifiques. > **Supported products** > **Required Scopes** # API du CRM | Produits Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/guide Dans HubSpot, les produits représentent les biens ou les services que vous vendez. Les points de terminaison des produits vous permettent de gérer et de synchroniser ces données. > **[Run in Postman](https://app.getpostman.com/run-collection/b4ad6241d1138c449a57)** > **Exigences de portée** # Produits Dans HubSpot, les produits représentent les biens ou les services que vous vendez. La création d'une [bibliothèque de produits](https://knowledge.hubspot.com/fr/products/create-and-manage-products) vous permet d'ajouter rapidement votre produit aux transactions et de générer des devis ainsi que des rapports sur les performances du produit. Les points de terminaison des produits vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes. Les produits ainsi que les entreprises, les contacts, les transactions, les lignes de produit et les devis sont des objets dans le CRM de HubSpot. Découvrez-en davantage sur les propriétés d'objet, les associations, les relations et bien plus encore dans le guide [Comprendre les objets de CRM](/docs/guides/crm/understanding-the-crm). **Exemple de cas d'utilisation :** afin que les commerciaux puissent facilement ajouter des biens et des services aux transactions, devis, etc., utilisez l'API des produits pour importer votre catalogue de produits dans HubSpot. ## Créer un produit Pour créer un produit, effectuez une requête `POST` à `crm/v3/objects/products`. Dans le corps de la requête, incluez un objet `properties` contenant les propriétés du produit que vous souhaitez définir lors de la création. Vous pouvez ensuite mettre à jour les propriétés d'un produit via une requête `PATCH` vers le même point de terminaison. Pour voir toutes les propriétés de produit disponibles, effectuez une requête `GET` à l'API [Propriétés](/docs/api-reference/crm-properties-v3/guide). Pour récupérer les propriétés du produit, l'URL de la requête sera `/crm/v3/properties/products`. ```json theme={null} { "properties": { "name": "Implementation Service", "price": "6000.00", "hs_sku": "123456", "description": "Onboarding service for data product", "hs_cost_of_goods_sold": "600.00", "hs_recurring_billing_period": "P12M" } } ``` > [!NOTE] > > Notez que la valeur de `hs_recurring_billing_period` est formatée comme `P#M`, où # est le nombre de mois. ## Associer des produits Les produits eux-mêmes ne peuvent pas être associés à d'autres objets de CRM. Cependant, pour associer les informations d'un produit à une transaction ou à un devis, vous pouvez créer une [ligne de produit](/docs/api-reference/crm-line-items-v3/guide) en fonction de ce produit. Les lignes de produit sont des instances individuelles de produits, et sont un objet distinct des produits afin que vous puissiez personnaliser les biens et services sur une transaction ou un devis sans avoir besoin de mettre à jour le produit lui-même. Par exemple, si vous préparez une transaction où l'un de vos produits est vendu, vous devez d'abord créer une ligne de produit à partir du produit, puis l'associer à la transaction. Vous pouvez le faire soit avec deux appels distincts, soit avec un appel qui crée et associe la ligne de produit. Les deux options sont présentées ci-dessous. > [!WARNING] > > ### Remarque : > > Les lignes de produit appartiennent à un seul objet parent. Si vous associez des objets, les lignes de produit doivent être individuelles à chaque objet. Par exemple, si vous créez une transaction et un devis, vous devez créer un ensemble de lignes de produit pour la transaction et un autre ensemble pour le devis. Cela aidera à rationaliser les données CRM entre les objets et à prévenir la perte de données inattendue lorsque vous devez modifier des lignes de produit. Par exemple, la suppression d'un devis supprimera également les lignes de produit du devis. Si ces lignes de produit sont également associées à une transaction, les lignes de produit de la transaction seront également supprimées. ### Créer et associer une ligne de produit (appels multiples) Tout d'abord, vous allez créer une ligne de produit basée sur un produit avec l'ID `1234567`. Pour obtenir une liste complète des propriétés de ligne de produit disponibles, effectuez une requête `GET` à l'API [Propriétés](/docs/api-reference/crm-properties-v3/guide). L'URL pour les lignes de produit sera `crm/v3/properties/line_items`. Étant donné que vous créez la ligne de produit à partir d'un produit existant, elle héritera des valeurs de propriété du produit, telles que le prix. ```json theme={null} { "properties": { "quantity": 1, "hs_object_id": "1234567", //the object ID of the product "name": "New line item (product-based)" } } ``` La réponse renverra un ID de ligne de produit que vous pouvez utiliser pour l'associer à une transaction à l'aide de l'[API des associations](/docs/api-reference/crm-associations-v4/guide). Pour cet exemple, supposons que l'ID de ligne de produit renvoyé est `7791176460`. Pour associer la ligne de produit à une transaction existante (ID : `14795354663`), vous devez effectuer une requête `PUT` à `/crm/v4/objects/line_items/7791176460/associations/default/deals/14795354663`. Cette requête utilise le type d'association par défaut. Une réponse `200` renverra des informations similaires à celles-ci : ```json theme={null} { "status": "COMPLETE", "results": [ { "from": { "id": "14795354663" }, "to": { "id": "7791176460" }, "associationSpec": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 19 } }, { "from": { "id": "7791176460" }, "to": { "id": "14795354663" }, "associationSpec": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 20 } } ], "startedAt": "2023-12-21T20:06:52.083Z", "completedAt": "2023-12-21T20:06:52.192Z" } ``` Dans HubSpot, la fiche d'informations de transaction affichera la ligne de produit dans la carte *Lignes de produit*. ![deal-record-line-item-association](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/deal-record-line-item-association.png) ### Créer et associer une ligne de produit (appel unique) Pour créer une ligne de produit à partir d'un produit existant et l'associer à une transaction à l'aide d'un seul appel, vous pouvez inclure un tableau `associations` dans la requête de création de ligne de produit. Pour créer la ligne de produit, effectuez une requête `POST` à `crm/v3/objects/line_item`. Le corps de votre requête ressemblera à ce qui suit. Notez que le `associationTypeId` pour l'association ligne de produit-transaction est `20`. Découvrez-en davantage sur les [types d'association entre les différents types de fiche d'informations de CRM](/docs/api-reference/crm-associations-v4/guide#association-type-id-values). ```json theme={null} { "properties": { "quantity": 1, "hs_object_id": "1234567", //the object ID of the product "name": "New line item (product-based)" }, "associations": [ { "to": { "id": "14795354663" }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 20 } ] } ] } ``` Une réponse `200` renverra des détails sur la nouvelle ligne de produit. Dans HubSpot, la fiche d'informations de transaction affichera la ligne de produit dans la carte *Lignes de produit*. ![deal-record-line-item-association](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/deal-record-line-item-association.png) # Product object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/object-definition # Search for products using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/search/search-products specs/2026-09/crm-products-v2026-09.json POST /crm/objects/2026-09/products/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet de récupérer une collection d'objets basée sur les paramètres de recherche définis dans le corps de la requête. Il est utile pour trouver des fiches d'informations spécifiques qui correspondent à certaines conditions au sein de votre compte HubSpot. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/products/update-product specs/2026-09/crm-products-v2026-09.json PATCH /crm/objects/2026-09/products/{productId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/batch/create-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/batch/create Créez un lot d'objets CRM avec des propriétés spécifiées dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui le rend efficace pour les opérations en masse. La réponse inclut les objets créés ainsi que leurs identifiants. Utilisez ce point de terminaison pour rationaliser la création de grands jeux de données au sein de votre CRM. > **Supported products** > **Required Scopes** # Archive a batch of projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/batch/delete-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/batch/archive Archiver un lot d'objets CRM par leurs identifiants. Cette opération déplace les objets spécifiés vers la corbeille, les archivant ainsi. Utilisez ce point de terminaison pour gérer de grands ensembles d'objets qui doivent être archivés simultanément. > **Supported products** > **Required Scopes** # Read a batch of projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/batch/get-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/batch/read Lisez un lot d'objets CRM par leurs ID internes ou leurs valeurs de propriété uniques. Ce point de terminaison vous permet de récupérer plusieurs objets en une seule requête, ce qui est utile pour collecter efficacement des données sur un ensemble d'objets. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/batch/update-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs détails dans le corps de la requête. Il est utile pour les mises à jour en masse où vous devez modifier les propriétés de plusieurs objets simultanément. La réponse inclura le statut de chaque opération de mise à jour. > **Supported products** > **Required Scopes** # Create or update a batch of projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/batch/upsert-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/batch/upsert Créez ou mettez à jour un lot d'objets CRM à l'aide de leurs valeurs de propriétés uniques. Ce point de terminaison permet de gérer efficacement plusieurs objets en une seule requête, en garantissant que chaque objet est créé ou mis à jour en fonction des identifiants uniques fournis. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/create-project specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects Créez un objet CRM avec les propriétés spécifiées et recevez une copie de l'objet, y compris son ID. Ce point de terminaison permet la création d'objets standard, avec une documentation et des exemples fournis pour faciliter le processus. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/delete-project specs/2026-09/crm-projects-v2026-09.json DELETE /crm/objects/2026-09/projects/{projectId} Déplacez un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique, afin qu'il ne soit plus utilisé directement, tout en le conservant dans le système pour une éventuelle récupération ou à des fins d'audit. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/get-project specs/2026-09/crm-projects-v2026-09.json GET /crm/objects/2026-09/projects/{projectId} Lisez un objet identifié par « {objectId} ». « {objectId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « properties ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/get-projects specs/2026-09/crm-projects-v2026-09.json GET /crm/objects/2026-09/projects Lisez une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés que vous souhaitez inclure dans la réponse. Ce point de terminaison prend en charge la pagination et vous permet de récupérer les ID d'objets associés et les fiches d'informations archivées. > **Supported products** > **Required Scopes** # Projects API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/guide # Merge two projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/merge-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/merge Fusionnez deux objets CRM du même type au sein de votre compte HubSpot. Cette opération combine les propriétés des objets spécifiés en un seul objet, en conservant l'ID de l'objet principal. Utilisez ce point de terminaison pour regrouper les fiches d'informations en double ou unifier les données sous un seul objet. > **Supported products** > **Required Scopes** # Search for projects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/search/search-projects specs/2026-09/crm-projects-v2026-09.json POST /crm/objects/2026-09/projects/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des requêtes complexes pour trouver des objets qui correspondent à des conditions spécifiques. Il renvoie une collection d'objets qui répondent aux critères de recherche, ainsi que le nombre total de résultats. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/projects/update-project specs/2026-09/crm-projects-v2026-09.json PATCH /crm/objects/2026-09/projects/{projectId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of quotes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/batch/create-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/batch/create Créez plusieurs devis en une seule demande en fournissant un lot d'objets devis, chacun avec ses propres propriétés et associations facultatives. > **Supported products** > **Required Scopes** # Archive a batch of quotes by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/batch/delete-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/batch/archive Archivez plusieurs devis par leur identifiant en une seule requête, les déplaçant ainsi efficacement vers la corbeille. > **Supported products** > **Required Scopes** # Read a batch of quotes by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/batch/get-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update a batch of quotes by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/batch/update-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/batch/update Mettez à jour plusieurs devis à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. Ce point de terminaison permet le traitement par lots des mises à jour de devis, garantissant une gestion efficace de plusieurs fiches d'informations en une seule requête. > **Supported products** > **Required Scopes** # Create or update a batch of quotes by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/batch/upsert-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/create-quote specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes Créez un devis avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création de devis standard sont fournis. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/delete-quote specs/2026-09/crm-quotes-v2026-09.json DELETE /crm/objects/2026-09/quotes/{quoteId} Déplacer un objet identifié par « {quoteId} » dans la corbeille. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/get-quote specs/2026-09/crm-quotes-v2026-09.json GET /crm/objects/2026-09/quotes/{quoteId} Lire un objet identifié par « {quoteId} ». « {quoteId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/get-quotes specs/2026-09/crm-quotes-v2026-09.json GET /crm/objects/2026-09/quotes Lire une page de devis. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # API du CRM | Devis Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/guide Les devis sont utilisés pour partager des informations tarifaires avec des prospects. Les points de terminaison des devis vous permettent de récupérer ces données et de les synchroniser entre HubSpot et d'autres systèmes. > **Exigences de portée** Utilisez l'API Devis pour créer, gérer et récupérer des devis afin de partager des informations sur les prix avec des acheteurs potentiels. Une fois configuré, un devis peut être partagé avec un acheteur via une URL spécifiée ou un PDF. Les utilisateurs peuvent également [gérer les devis dans HubSpot](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes-legacy#manage-quotes) pour ajouter des détails, mettre à jour les associations, etc. Si vous avez configuré les [paiements HubSpot](https://knowledge.hubspot.com/fr/payment-processing/set-up-payments) ou le [traitement des paiements Stripe](https://knowledge.hubspot.com/fr/payment-processing/connect-your-stripe-account-as-a-payment-processor-in-hubspot), vous pouvez configurer un devis à payer via cette API. En savoir plus sur les [devis payables](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#enable-payments). ![example-quote-api](https://www.hubspot.fr/hubfs/Knowledge_Base_2023/example-quote-api.png) **Exemple de cas d'utilisation :** vous devez créer une proposition de contrat pour un client qui souhaite acheter l'un de vos forfaits annuels de services d'audit SEO. Découvrez ci-dessous comment créer un devis via l'API et configurer ses différentes propriétés, associations, états, etc. ## Présentation Le processus de création de devis peut être divisé en plusieurs étapes : 1. **Créer un devis :** permet de créer un devis avec quelques détails, tels que le nom et la date d'expiration. Vous pouvez également configurer le devis pour [activer les signatures électroniques](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#enable-e-signatures) et les [paiements](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#enable-payments)[](https://knowledge.hubspot.com/fr/quotes/use-e-signatures-with-quotes). 2. **Configurer des associations :** permet d'associer le devis à d'autres types d'objets CRM, tels que des lignes de produits, un modèle de devis, une transaction, etc. Au cours de l'étape suivante, le devis héritera des valeurs de propriété de certaines de ces fiches d'informations associées ainsi que des paramètres du compte. 3. **Définir l'état du devis :** permet de définir l'état du devis pour refléter sa prédisposition à être partagé avec les acheteurs. Lorsque vous définissez l'état du devis, par exemple en le transformant en brouillon modifiable ou en devis publié accessible au public, il [héritera de certaines propriétés](#properties-set-by-quote-state) de ses fiches d'informations CRM et paramètres de compte associés. 4. **Partager le devis :** une fois un devis publié, vous pouvez le partager avec vos acheteurs. ## Créer un devis Pour créer un devis, vous devez d'abord configurer ses détails de base en effectuant une requête `POST` à `/crm/v3/objects/quotes`. Vous devez ensuite effectuer un appel distinct pour associer le devis à d'autres objets, tels que le modèle de devis, les lignes de produit ou une transaction. > [!NOTE] > > En fonction de votre workflow préféré, vous pouvez [créer un devis avec des associations via une seule requête POST](#create-a-quote-with-associations-single-request). Dans le corps de l'article, ajoutez les propriétés requises suivantes pour configurer ses détails de base. ```json theme={null} { "properties": { "hs_title": "CustomerName - annual SEO audit", "hs_expiration_date": "2023-12-10" } } ``` | Paramètre | Type | Description | | - | - | - | | `hs_title` | Chaîne | Le nom du devis. | | `hs_expiration_date` | Chaîne | La date d'expiration du devis. | Les propriétés ci-dessus ne sont que les propriétés minimum requises pour qu'un devis soit lancé, mais [d'autres propriétés](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#adding-associations) sont requises pour publier un devis. Pour afficher toutes les propriétés de devis disponibles, faites une requête `GET` à `crm/v3/properties/quotes`. Découvrez-en davantage sur l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). La réponse comprendra un `id`, que vous utiliserez pour continuer à configurer le devis. Vous pouvez mettre à jour les propriétés du devis à tout moment en effectuant une requête `PATCH` à `/crm/v3/objects/quotes/{quoteId}`. ### Propriétaire du devis La définition manuelle de la propriété `hubspot_owner_id` n'est pas possible car il s'agit d'une propriété calculée et toutes les valeurs seront remplacées. Lors de l'utilisation des devis, la propriété fonctionne comme suit : * Si une [transaction est associée au devis](#adding-associations), la propriété `hubspot_owner_id` reflétera la propriété `hs_associated_deal_owner_id` (`hs_associated_deal_owner_id` est une propriété calculée). * Si une transaction n'est pas associée au devis, la propriété `hubspot_owner_id` reflétera la propriété `hs_quote_owner_id`. ### Activer les signatures électroniques Pour activer les signatures électroniques sur le devis, incluez la propriété booléenne `hs_esign_enabled` dans votre corps de requête avec la valeur `true`. Notez que vous ne pourrez pas ajouter de contresignataires via l'API. Ceux-ci devront donc être ajoutés dans HubSpot avant de publier le devis. Vous ne pouvez pas non plus publier de devis avec la signature électronique activée si vous avez [dépassé votre limite mensuelle de signatures électroniques](https://knowledge.hubspot.com/fr/quotes/use-e-signatures-with-quotes#monitor-e-signature-usage). ```json theme={null} { "properties": { "hs_title": "CustomerName - annual SEO audit", "hs_expiration_date": "2023-12-10", "hs_esign_enabled": "true" } } ``` Vous devrez associer le devis aux signataires du devis ultérieurement. Bien que les contacts signant le devis existent en tant que contacts dans HubSpot, ils sont stockés en tant que types d'association distincts des contacts. Découvrez-en davantage sur l'[association de devis avec des signataires de devis](#associating-quote-signers). ### Activer les paiements Pour activer les paiements sur un devis, incluez la propriété booléenne `hs_payment_enabled` dans votre corps de la requête avec la valeur `true`. En fonction de votre prestataire de services de paiement et des modes de paiement acceptés, vous devrez également définir `hs_payment_type` et `hs_allowed_payment_methods`. > [!WARNING] > > ### Remarque : > > Le compte HubSpot doit avoir configuré les [paiements HubSpot](https://knowledge.hubspot.com/fr/payment-processing/set-up-payments) ou le [traitement des paiements Stripe](https://knowledge.hubspot.com/fr/payment-processing/connect-your-stripe-account-as-a-payment-processor-in-hubspot) avant d'utiliser cette fonctionnalité. | Paramètre | Type | Description | | - | - | - | | `hs_payment_enabled` | Booléen |  : lorsque la valeur est défini sur `true`, l'option permet au devis de collecter le paiement en utilisant les paiements ou le traitement des paiements Stripe. La valeur par défaut est `false`. | | `hs_payment_type` | Énumération |  : permet de déterminer le prestataire de services de paiement à utiliser. La valeur peut être soit `HUBSPOT` ou `BYO_STRIPE`. | | `hs_allowed_payment_methods` | Énumération |  : les modes de paiement à utiliser (par exemple, carte de crédit). | | `hs_collect_billing_address` | Booléen |  : lorsque la valeur est définie sur `true`, permet à l'acheteur de saisir son adresse de facturation lors du paiement. | | `hs_collect_shipping_address` | Booléen |  : lorsque la valeur est définie sur `true`, permet à l'acheteur de saisir son adresse de livraison lors du paiement. | Par exemple, pour créer un devis et activer les paiements par carte de crédit/débit ou ACH, votre requête ressemblera à ceci : ```json theme={null} { "properties": { "hs_title": "CustomerName - annual SEO audit", "hs_expiration_date": "2023-12-10", "hs_payment_enabled": "true", "hs_payment_type": "HUBSPOT", "hs_allowed_payment_methods": "CREDIT_OR_DEBIT_CARD;ACH" } } ``` Pour suivre le paiement, HubSpot mettra automatiquement à jour les propriétés `hs_payment_status` et `hs_payment_date` : * Lorsque vous publiez un devis avec les paiements activés, HubSpot définit automatiquement la propriété `hs_payment_status` sur `PENDING`. * Si vous utilisez ACH, lorsque le paiement est traité, HubSpot définira automatiquement la propriété `hs_payment_status` sur `PROCESSING`. * Une fois le paiement confirmé, HubSpot définira automatiquement la propriété `hs_payment_status` sur `PAID`. * Une fois le devis payé, HubSpot définira automatiquement `hs_payment_date` à la date et à l'heure de confirmation du paiement. * Une fois le paiement confirmé, le paiement est automatiquement associé au devis. Si vous souhaitez obtenir plus d'informations sur le paiement, reportez-vous à l'[API outils de paiement](/docs/api-reference/crm-commerce-payments-v3/guide). ## Ajout d'associations Pour créer un devis complet, vous devez l'associer à d'autres fiches d'informations CRM, telles que des lignes de produit, à l'aide de [l'API des associations](/docs/api-reference/crm-associations-v4/guide). Le tableau ci-dessous indique quelles associations de fiches d'informations CRM sont requises pour un devis complet et lesquelles sont facultatives. Poursuivez votre lecture pour en savoir plus sur la récupération des identifiants et leur utilisation pour créer les associations requises. | Type d'objet | Obligatoire | Description | | - | - | - | | [Lignes de produit](https://developers.hubspot.fr/docs/api-reference/crm-line-items-v3/guide) | Oui |  : les biens et/ou services vendus via le devis. Vous pouvez créer des lignes de produits à partir de [produits de votre bibliothèque de produits](https://developers.hubspot.fr/docs/api-reference/crm-products-v3/guide) ou créer des lignes de produits autonomes personnalisées. | | [Modèle de devis](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes-legacy) | Oui |  : le modèle qui crée le devis et fournit certains de ses paramètres de configuration, tels que la langue. Chaque devis peut être associé à un modèle. | | [Transaction](/docs/api-reference/crm-deals-v3/guide) | Oui |  : la fiche d'informations de transaction pour le suivi des revenus et du cycle de vie des ventes. Un devis hérite des valeurs de la transaction associée, y compris le propriétaire et la devise. Chaque devis peut être associé à une transaction. | | [Contact](/docs/api-reference/crm-contacts-v3/guide) | Non |  : les acheteurs spécifiques auxquels vous vous adressez dans le devis. | | [Entreprise](/docs/api-reference/crm-companies-v3/guide) | Non |  : une entreprise spécifique à laquelle vous vous adressez dans le devis. Chaque devis peut être associé à une entreprise. | | [Remises](/docs/api-reference/crm-discounts-v3/guide), [frais](/docs/api-reference/crm-fees-v3/guide) et [taxes](/docs/api-reference/crm-taxes-v3/guide) | Non |  : l'ensemble des remises, frais et taxes à appliquer au moment du paiement. Pour déterminer le montant total du devis, HubSpot applique d'abord des remises, puis des frais, puis des taxes. Vous pouvez utiliser le champ `hs_sort_order` pour réorganiser des objets du même type. Peut être défini sur des valeurs fixes ou des pourcentages en définissant `hs_type` sur `FIXED` ou `PERCENT`. | ### Récupération des identifiants pour les associations Pour effectuer chaque association, vous devez d'abord récupérer l'identifiant de chaque objet que vous souhaitez associer. Pour récupérer chaque identifiant, vous devez effectuer une requête `GET` au point de terminaison de l'objet concerné, qui suivra le même schéma pour chaque objet CRM. Dans chaque requête, vous pouvez également inclure un paramètre de requête `properties` pour renvoyer des propriétés spécifiques, si nécessaire. Vous trouverez ci-dessous des exemples de requêtes `GET` pour chaque type d'objet. ```text hubl.txt theme={null} GET request for line items /crm/v3/objects/line_items?properties=name GET request for quote templates /crm/v3/objects/quote_template?properties=hs_name GET request for deals /crm/v3/objects/deals?properties=dealname GET request for contacts /crm/v3/objects/contacts?properties=email GET request for companies /crm/v3/objects/companies?properties=name GET request for discounts crm/v3/objects/discounts?properties=hs_type,hs_value GET request for fees crm/v3/objects/fees?properties=hs_type,hs_value GET request for taxes crm/v3/objects/taxes?properties=hs_type,hs_value ``` ```bash example.sh theme={null} #GET request for line items curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/line_items?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for quote templates curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/quote_templates?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for deals curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/deals?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for contacts curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/contacts?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for companies curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/companies?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for discounts curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/discounts?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for fees curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/fees?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #GET request for taxes curl --request GET \ --url 'https://api.hubapi.com/crm/v3/properties/taxes?archived=false' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' ``` Chaque appel réussi renverra une réponse de `200` avec des détails pour chaque type d'objet récupéré. Vous utiliserez cette valeur dans le champ `id` pour définir des associations à l'étape suivante. ```json theme={null} { "results": [ { "id": "235425923863", "properties": { "hs_createdate": "2023-06-12T16:27:32.794Z", "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z", "hs_name": "Default Basic", "hs_object_id": "235425923863" }, "createdAt": "2023-06-12T16:27:32.794Z", "updatedAt": "2023-06-12T16:27:32.794Z", "archived": false }, { "id": "235425923864", "properties": { "hs_createdate": "2023-06-12T16:27:32.794Z", "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z", "hs_name": "Default Modern", "hs_object_id": "235425923864" }, "createdAt": "2023-06-12T16:27:32.794Z", "updatedAt": "2023-06-12T16:27:32.794Z", "archived": false }, { "id": "235425923865", "properties": { "hs_createdate": "2023-06-12T16:27:32.794Z", "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z", "hs_name": "Default Original", "hs_object_id": "235425923865" }, "createdAt": "2023-06-12T16:27:32.794Z", "updatedAt": "2023-06-12T16:27:32.794Z", "archived": false } ] } ``` ### Création d'associations Une fois vos identifiants récupérés, vous pouvez appeler [l'API des associations](/docs/api-reference/crm-associations-v4/guide) pour créer des associations. Pour chaque type d'objet que vous souhaitez associer à un devis, vous devrez procéder à un appel distinct en effectuant une requête `PUT` à l'aide de la structure d'URL ci-dessous : `/crm/v4/objects/quotes/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}` | Paramètre | Description | | - | - | | `fromObjectId` | L'ID du devis. | | `toObjectType` | Le type d'objet associé. Par exemple : `line_items`, `deals` et `quote_template`. | | `toObjectId` | L'ID de l'objet auquel vous associez le devis. | Vous trouverez ci-dessous des exemples de requêtes `PUT` pour chaque type d'objet. ```text hubl.txt theme={null} PUT request to associate a line item /crm/v4/objects/quotes/{quoteId}/associations/default/line_items/{lineItemId} PUT request to associate a quote template /crm/v4/objects/quotes/{quoteId}/associations/default/quote_template/{quoteTemplateId} PUT request to associate a deal /crm/v4/objects/quotes/{quoteId}/associations/default/deals/{dealId} PUT request to associate contacts /crm/v4/objects/quotes/{quoteId}/associations/default/contacts/{contactId} PUT request to associate companies /crm/v4/objects/quotes/{quoteId}/associations/default/companies/{companyId} PUT request to associate discounts /crm/v4/objects/quotes/{quoteId}/associations/default/discounts/{discountId} PUT request to associate fees /crm/v4/objects/quotes/{quoteId}/associations/default/fees/{feeId} PUT request to associate taxes /crm/v4/objects/quotes/{quoteId}/associations/default/taxes/{taxId} ``` ```bash example.sh theme={null} #PUT request to associate line items curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/line_items/{lineItemId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate a quote template curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quote_ID}/associations/default/quote_template/{quoteTemplateId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate a deal curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/deals/{dealId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate contacts curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/contacts/{contactId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate a company curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/companies/{companyId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate discounts curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/discounts/{discountId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate fees curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/fees/{feeId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' #PUT request to associate taxes curl --request PUT \ --url https://api.hubapi.com/crm/v4/objects/quotes/{quoteId}/associations/default/line_items/{taxId} \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' ``` Par exemple, si votre devis a un ID de `123456`, les requêtes d'association du devis peuvent inclure les éléments suivants : * **Lignes de produit (ID : `55555`, `66666`) :** * `/crm/v4/objects/quotes/123456/associations/default/line_items/55555` * `/crm/v4/objects/quotes/123456/associations/default/line_items/66666` * **Modèle de devis (ID :** `987654`**) :** `/crm/v4/objects/quotes/123456/associations/default/quote_template/987654` * **Transaction (ID : `345345`) :** `/crm/v4/objects/quotes/123456/associations/default/deals/345345` Chaque association réussie renverra une réponse de `200` ainsi que des détails sur l'association. Les appels ci-dessus associeront les objets dans les deux directions, chaque direction ayant son propre ID. Par exemple, si vous associez le devis à un modèle de devis, la réponse décrira l'association des deux côtés. Dans l'exemple de réponse ci-dessous, `286` est l'ID du type d'association de devis à modèle de devis, et `285` est l'ID du type d'association de modèle de devis à devis. ```json theme={null} { "status": "COMPLETE", "results": [ { "from": { "id": "115045534742" }, "to": { "id": "102848290" }, "associationSpec": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 285 } }, { "from": { "id": "102848290" }, "to": { "id": "115045534742" }, "associationSpec": { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 286 } } ], "startedAt": "2023-10-12T16:48:40.624Z", "completedAt": "2023-10-12T16:48:40.712Z" } ``` > [!WARNING] > > ### Lorsque vous associez un devis à un modèle de devis, tenez compte des limites suivantes : > > * Les modèles de devis doivent être [créés](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes-legacy) avant de pouvoir être associés à un devis. > * Un devis ne peut être associé qu'à un seul modèle de devis. > * Cette API ne prend pas en charge les devis hérités ou d'offre. Seul le type de modèle `CUSTOMIZABLE_QUOTE_TEMPLATE` peut être utilisé. ### Association des signataires de devis Si vous [activez le devis pour les signatures électroniques](#enable-e-signatures), vous devrez également créer une association entre le devis et les contacts qui signent en utilisant un [libellé d'association](/docs/api-reference/crm-associations-v4/guide#associate-records-with-a-label) spécifique de devis à contact. Plutôt que d'utiliser les points de terminaison d'association par défaut indiqués ci-dessus, vous devrez effectuer une requête `PUT` à l'URL suivante : `/crm/v4/objects/quote/{quoteId}/associations/contact/{contactId}` Dans le corps de la requête, vous devrez spécifier `associationCategory` et `associationTypeId`, comme indiqué ci-dessous : ```json theme={null} [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 702 } ] ``` ## Créer un devis avec les associations (requête unique) Le corps de requête suivant créera un nouveau devis avec des associations à un modèle de devis, à une transaction, à deux lignes de produits et à un contact. > [!NOTE] > > Pour que le corps de la requête ci-dessous crée correctement un devis dans votre compte, vous devrez mettre à jour les ID d'objets dans le champ `associations` afin qu'ils correspondent aux données existantes dans votre CRM. Consultez la [section Récupération des identifiants pour les associations](#retrieving-ids-for-associations) pour plus d'informations. `POST` `/crm/v3/objects/quote` ```json theme={null} { "properties": { "hs_title": "CustomerName - annual SEO audit", "hs_expiration_date": "2023-09-30" }, "associations": [ { "to": { "id": 115045534742 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 286 } ] }, { "to": { "id": 14795354663 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 64 } ] }, { "to": { "id": 75895447 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 67 } ] }, { "to": { "id": 256143985 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 67 } ] } ] } ``` | Paramètre | Type | Description | | - | - | - | | `properties` | Objet | Valeurs des propriétés pour définir les détails du devis. Les propriétés requises sont `hs_title` et `hs_expiration_date` :
          • `hs_title` : le nom du devis.
          • `hs_expiration_date` : la date d'expiration du devis.
          • `hs_status` : l'[état du devis](#update-quote-state). S'il n'est pas fourni lors de la création, les utilisateurs ne pourront pas modifier le devis dans HubSpot.
          | | `associations` | Tableau | Les autres fiches d'informations du CRM et les autres objets associés au devis. Pour qu'un devis puisse être publié, une transaction et un modèle de devis doivent lui être associés. Les lignes de produits associées à un devis doivent être distinctes des lignes de produits associées à la transaction du devis (vous devez créer des copies des lignes de produits). Pour définir chaque association, incluez un objet distinct dans ce tableau avec les champs suivants :
          • `to` : l'ID de l'fiche d'informations ou de l'objet à associer au devis.
          • `associationCategory` : la [catégorie libellé](/docs/api-reference/crm-associations-v4/guide#associate-records-with-a-label) du type d'association, soit `"HUBSPOT_DEFINED"` (libellé par défaut), soit `"USER_DEFINED"` (libellé personnalisé).
          • `associationTypeId` : l'[ID du type d'association](/docs/api-reference/crm-associations-v4/guide#association-type-id-values) créé. Par exemple :
            • `286` : modèle de devis à devis
            • `64` : devis à transaction
            • `67` : devis à ligne de produit
          | > [!WARNING] > > ### Remarque : > > Ces lignes de produit doivent être différentes des lignes de produit d'autres objets, même si elles sont associées (par exemple, associer un devis à une transaction). Voir la [documentation de l'API des lignes de produit](https://developers.hubspot.fr/docs/api-reference/crm-line-items-v3/guide) pour plus d'informations. ## Mettre à jour l'état du devis L'état d'un devis décrit sa progression dans le processus de création, de sa configuration initiale à sa publication et son accès public. L'état du devis peut également refléter son [processus d'approbation](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes), si les approbations de devis sont activées pour le compte. Lorsque vous définissez l'état d'un devis, HubSpot [renseigne automatiquement certaines propriétés](#properties-set-by-quote-state). Vous pouvez mettre à jour l'état d'un devis en effectuant une requête `PATCH` à `/crm/v3/objects/quote/{quoteId}`. L'état d'un devis est basé sur le champ `hs_status`. Certains états de devis permettent aux utilisateurs de modifier, de publier et d'utiliser le devis dans les workflows d'approbation des devis. Vous trouverez ci-dessous les états de devis disponibles. * **Aucun état :** si aucune valeur n'est fournie pour le champ `hs_status`, le devis aura le statut *Minimal*. Le devis apparaîtra sur la page index de l'outil Devis, mais ne pourra pas être modifié directement. Les devis à cet état peuvent toujours être utilisés dans l'automatisation, tels que l'outil Séquences, et sont également disponibles pour l'analyse dans l'outil Rapports. * `DRAFT` : permet de modifier le devis dans HubSpot. Cet état peut être utile lorsque le devis n'est pas entièrement configuré ou si vous préférez autoriser les commerciaux à terminer le processus de configuration du devis dans HubSpot. * `APPROVAL_NOT_NEEDED` : publie le devis à une URL publiquement accessible (`hs_quote_link`) sans nécessiter d'être [approuvé](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes). * `PENDING_APPROVAL` : indique que le devis est [en attente d'approbation](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes) avant de pouvoir être publié. * `APPROVED` : le devis a été [approuvé](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes) et est maintenant publié à une URL publiquement accessible (`hs_quote_link`). * `REJECTED` : indique que le devis a été configuré, mais qu'il n'a pas été [approuvé](https://knowledge.hubspot.com/fr/quotes/set-up-legacy-quotes) pour publication et qu'il doit être modifié avant de pouvoir être soumis à nouveau pour approbation. > [!WARNING] > > ### Remarque : > > Si vous [activez les signatures électroniques](#enabling-e-signatures) sur le devis, vous ne pourrez pas publier le devis si vous avez dépassé votre [limite mensuelle de signatures électroniques](https://knowledge.hubspot.com/fr/quotes/use-e-signatures-with-quotes#monitor-e-signature-usage). Par exemple, la requête suivante permet de publier le devis à une URL publiquement accessible. ```json theme={null} { "properties": { "hs_status": "APPROVAL_NOT_NEEDED" } } ``` > [!WARNING] > > ### Remarque : > > Par défaut, HubSpot définira la propriété `hs_template_type` du devis sur `CUSTOMIZABLE_QUOTE_TEMPLATE` après avoir [mis à jour l'état du devis](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#update-quote-state). Ce type de modèle est pris en charge par l'API v3, tandis que les types de modèles suivants sont des modèles hérités qui ne sont plus pris en charge : > > * `QUOTE` > * `PROPOSAL` ### Propriétés définies par l'état du devis La mise à jour de l'état du devis mettra à jour les propriétés suivantes : * `hs_quote_amount` : calculé sur la base des lignes de produits, taxes, remises et frais associés. * `hs_domain` : défini à partir du modèle de devis associé. * `hs_slug` : généré aléatoirement si pas fourni explicitement. * `hs_quote_total_preference` : défini en fonction des paramètres de votre compte. Si vous n'avez pas configuré ce paramètre, la valeur du champ total\_first\_payment s'affiche par défaut. * `hs_timezone` : par défaut, le fuseau horaire de votre compte HubSpot. * `hs_locale` : défini à partir du modèle de devis associé. * `hs_quote_number` : défini en fonction de la date et de l'heure actuelles, à moins qu'une date ne soit fournie. * `hs_language` : défini à partir du modèle de devis associé. * `hs_currency` : défini en fonction de la transaction associée. Si vous n'avez pas associé une transaction à la proposition, celle-ci sera réglée par défaut sur la devise par défaut de votre compte HubSpot. En outre, les propriétés ci-dessous seront calculées lorsque le devis passera à l'état Publié : * `hs_pdf_download_link` : rempli avec une URL d'un PDF pour le devis. * `hs_locked` : permet de définir sur la valeur `true`. Pour modifier des propriétés après avoir publié un devis, vous devez tout d'abord mettre à jour le `hs_status` du devis pour le ramener sur `DRAFT`, `PENDING_APPROVAL` ou `REJECTED`. * `hs_quote_link` : l'URL du devis accessible au public. Il s'agit d'une propriété en lecture seule qui ne peut pas être définie via l'API après publication. * `hs_esign_num_signers_required` : si vous avez [activé les signatures électroniques](#enable-e-signatures), affiche le nombre de signatures requises. * `hs_payment_status` : statut de la collecte des paiements, si vous avez activé les paiements. Lors de la publication avec les paiements activés, cette propriété sera définie sur EN ATTENTE. Une fois que l'acheteur a effectué le paiement via le devis, le statut sera automatiquement mis à jour en conséquence. En savoir plus sur l'[activation des paiements](https://developers.hubspot.fr/docs/api-reference/crm-quotes-v3/guide#enable-payments). ## Récupérer des devis Vous pouvez récupérer des devis individuellement ou par lots. * Pour récupérer un devis individuel, effectuez une requête `GET` à `/crm/v3/objects/quotes/{quoteID}`. * Pour demander une liste de tous les devis, effectuez une requête `GET` à `/crm/v3/objects/quotes`. Pour ces points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si le contact du devis demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si le devis demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | Pour récupérer un lot de devis spécifiques via leurs ID, effectuez une requête `POST` à `crm/v3/objects/quotes/batch/read` et incluez les ID dans le corps de la requête. Vous pouvez également inclure un tableau de `properties` pour indiquer les propriétés à renvoyer. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). ```json theme={null} { "inputs": [ { "id": "342007287" }, { "id": "81204505203" } ], "properties": ["hs_content", "hs_sentiment", "hs_submission_timestamp"] } ``` ## Périmètres d'accès Les périmètres suivants sont requis pour une application afin de créer un devis publiable valide : * `crm.objects.quotes.write`, `crm.objects.quotes.read`, `crm.objects.line_items.write`, `crm.objects.line_items.read`, `crm.objects.owners.read`, `crm.objects.contacts.write`, `crm.objects.contacts.read`, `crm.objects.deals.write`, `crm.objects.deals.read`, `crm.objects.companies.write`, `crm.objects.companies.read` * `crm.schemas.quote.read`, `crm.schemas.line_items.read`, `crm.schemas.contacts.read`, `crm.schemas.deals.read`, `crm.schemas.companies.read` # Quote rules syntax Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/quote-rules-syntax # Search for quotes using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/search/search-quotes specs/2026-09/crm-quotes-v2026-09.json POST /crm/objects/2026-09/quotes/search Effectuez une recherche de devis en fonction des critères définis dans le corps de la requête, tels que les filtres, les propriétés et les options de tri. Ce point de terminaison permet d'effectuer des requêtes détaillées sur les fiches d'informations de devis afin de récupérer des ensembles de données spécifiques. > **Supported products** > **Required Scopes** # Partially update a quote Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/update-quote specs/2026-09/crm-quotes-v2026-09.json PATCH /crm/objects/2026-09/quotes/{quoteId} Effectue une mise à jour partielle d'un objet identifié par « {quoteId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {quoteId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update a quote Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/quotes/update-quote-objectId specs/2026-09/crm-quotes-v2026-09.json PATCH /crm/objects/2026-09/quotes/{quoteId} Effectue une mise à jour partielle d'un objet identifié par « {quoteId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {quoteId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Retrieve multiple custom object schemas in a batch request. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/batch/get-schemas specs/2026-09/crm-schemas-v2026-09.json POST /crm-object-schemas/2026-09/schemas/batch/read Récupérer les détails de plusieurs schémas d'objets personnalisés en fournissant une requête par lots avec les entrées spécifiées. Cette opération vous permet de récupérer les informations de schéma, y compris les propriétés et les associations, pour plusieurs objets personnalisés en un seul appel d'API. > **Supported products** > **Required Scopes** # Create a new custom object schema. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/create-schema specs/2026-09/crm-schemas-v2026-09.json POST /crm-object-schemas/2026-09/schemas Créer un nouveau schéma d'objet personnalisé en définissant ses propriétés et ses associations. > **Supported products** > **Required Scopes** # Delete the schema of a specified custom object. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/delete-schema specs/2026-09/crm-schemas-v2026-09.json DELETE /crm-object-schemas/2026-09/schemas/{objectType} Supprimer un schéma d'objet personnalisé du compte à l'aide de son ID de type d'objet ou de son nom complet. > **Supported products** > **Required Scopes** # Retrieve the schema of a specified custom object. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/get-schema specs/2026-09/crm-schemas-v2026-09.json GET /crm-object-schemas/2026-09/schemas/{objectType} Récupérer les détails d'un schéma d'objet personnalisé, y compris ses propriétés et ses associations, en utilisant l'ID de type d'objet ou le nom entièrement qualifié. > **Supported products** > **Required Scopes** # Retrieve all custom object schemas. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/get-schemas specs/2026-09/crm-schemas-v2026-09.json GET /crm-object-schemas/2026-09/schemas Récupérer tous les schémas d'objets personnalisés, avec des options pour inclure les définitions de propriétés, les définitions d'associations et les métadonnées d'audit. > **Supported products** > **Required Scopes** # Schemas API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/guide # Update the schema of a specified custom object. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/schemas/update-schema specs/2026-09/crm-schemas-v2026-09.json PATCH /crm-object-schemas/2026-09/schemas/{objectType} Mettre à jour les attributs d'un schéma d'objet personnalisé, tels que les propriétés et les libellés, à l'aide de l'ID de type d'objet ou du nom complet. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/create-service specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162 Créez un objet CRM avec les propriétés spécifiées et renvoyez une copie de l'objet, y compris son ID. Ce point de terminaison vous permet de créer des objets standard dans votre compte HubSpot, en fournissant de la documentation et des exemples pour vous guider. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/get-service specs/2026-09/crm-services-v2026-09.json GET /crm/objects/2026-09/0-162/{serviceId} Lisez un objet identifié par « objectId ». Par défaut, « objectId » fait référence à l'ID d'objet interne, mais il peut également s'agir de toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». La réponse peut être personnalisée à l'aide du paramètre de requête « properties » pour inclure des propriétés d'objet spécifiques. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/get-services specs/2026-09/crm-services-v2026-09.json GET /crm/objects/2026-09/0-162 Récupérez une page d'objets CRM d'un type spécifié. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés à inclure à l'aide du paramètre de requête « properties ». Ce point de terminaison prend en charge la pagination et vous permet de filtrer les résultats en fonction du statut archivé. > **Supported products** > **Required Scopes** # Services API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/guide # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/update-service-objectId specs/2026-09/crm-services-v2026-09.json PATCH /crm/objects/2026-09/0-162/{serviceId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of services Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/batch/create-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/batch/create Créez un lot d'objets CRM d'un type spécifié dans HubSpot. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui simplifie le processus de remplissage de votre CRM avec de nouvelles données. Chaque objet doit inclure les propriétés nécessaires à sa création. > **Supported products** > **Required Scopes** # Archive a batch of services by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/batch/delete-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/batch/archive Archivez un lot d'objets CRM par leurs identifiants. Cette opération déplace les objets spécifiés vers la corbeille, ce qui les archive. Utilisez ce point de terminaison pour gérer un grand nombre d'objets à archiver simultanément. > **Supported products** > **Required Scopes** # Read a batch of services by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/batch/get-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/batch/read Récupérez un lot d'objets CRM à l'aide de leurs identifiants internes ou de leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets à la fois, vous permettant de spécifier si les objets archivés doivent être inclus dans la réponse. > **Supported products** > **Required Scopes** # Update a batch of services by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/batch/update-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/batch/update Mettez à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs détails dans le corps de la requête. Il est utile pour effectuer efficacement des mises à jour groupées pour les propriétés d'objet. > **Supported products** > **Required Scopes** # Create or update a batch of services by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/batch/upsert-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/batch/upsert Créez ou mettez à jour un lot d'objets CRM dans HubSpot en utilisant des valeurs de propriété uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en créant de nouvelles entrées ou en mettant à jour celles qui existent, en fonction des propriétés spécifiées. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/delete-service specs/2026-09/crm-services-v2026-09.json DELETE /crm/objects/2026-09/0-162/{serviceId} Déplacez un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique d'un type donné, identifié par son ID unique. > **Supported products** > **Required Scopes** # Merge two services Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/merge/merge-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/services/merge Fusionnez deux objets CRM du même type dans votre compte HubSpot. Cette opération combine les propriétés et les associations des objets spécifiés en un seul objet, identifié par l'ID de l'objet principal. Utilisez ce point de terminaison pour consolider les fiches d'informations en double ou unifier les données sous une seule entité. > **Supported products** > **Required Scopes** # Search across objects Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/search/search-services specs/2026-09/crm-services-v2026-09.json POST /crm/objects/2026-09/0-162/search Recherchez des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'interroger des objets en fonction de leurs propriétés et de renvoyer les résultats qui correspondent aux critères de recherche spécifiés. Il est utile pour récupérer des sous-ensembles de données spécifiques de votre système CRM. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/services/update-service specs/2026-09/crm-services-v2026-09.json PATCH /crm/objects/2026-09/0-162/{serviceId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of taxes Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/batch/create-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/batch/create Créer un lot d'objets CRM avec les propriétés spécifiées. Ce point de terminaison vous permet de créer efficacement plusieurs objets en une seule requête, en renvoyant une copie de chaque objet créé, y compris les identifiants. Il est utile pour les opérations en masse où plusieurs objets doivent être créés simultanément. > **Supported products** > **Required Scopes** # Archive a batch of taxes by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/batch/delete-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/batch/archive Archiver un lot d'objets CRM identifiés par leurs identifiants. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui simplifie la gestion de grands jeux de données. > **Supported products** > **Required Scopes** # Read a batch of taxes by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/batch/get-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/batch/read Récupérer un lot d'objets CRM par leurs identifiants internes ou leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui rationalise les processus de récupération de données. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of taxes by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/batch/update-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/batch/update Mettre à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs détails dans le corps de la requête. Il est utile pour les mises à jour en masse où vous devez modifier simultanément les propriétés de plusieurs objets. > **Supported products** > **Required Scopes** # Create or update a batch of taxes by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/batch/upsert-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/batch/upsert Créer ou mettre à jour un lot d'objets CRM en fonction de valeurs de propriétés uniques dans votre compte HubSpot. Ce point de terminaison vous permet de gérer efficacement de grands ensembles d'objets en créant de nouvelles entrées ou en mettant à jour les existantes, en fonction d'identifiants uniques. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/create-tax specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes Créer un objet CRM avec les propriétés spécifiées et recevoir une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM, vous permettant de définir les propriétés de l'objet lors de sa création. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/delete-tax specs/2026-09/crm-taxes-v2026-09.json DELETE /crm/objects/2026-09/taxes/{taxId} Déplacez un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique, le rendant inactif mais toujours récupérable depuis la corbeille si nécessaire. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/get-tax specs/2026-09/crm-taxes-v2026-09.json GET /crm/objects/2026-09/taxes/{taxId} Lit un objet identifié par « objectId » dans le « objectType » spécifié. Par défaut, « objectId » fait référence à l'ID d'objet interne, mais il peut également faire référence à toute valeur de propriété unique, comme spécifié par le paramètre de requête « idProperty ». Vous pouvez contrôler le contenu de la réponse à l'aide du paramètre de requête « properties » . > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/get-taxes specs/2026-09/crm-taxes-v2026-09.json GET /crm/objects/2026-09/taxes Lire une page d'objets CRM d'un type donné. Vous pouvez contrôler les données renvoyées en utilisant le paramètre de requête « propriétés » pour spécifier les propriétés d'objet à inclure. Ce point de terminaison prend en charge la pagination et vous permet de récupérer les ID associés pour les types d'objets mentionnés. > **Supported products** > **Required Scopes** # Taxes API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/guide # Search for taxes using specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/search/search-taxes specs/2026-09/crm-taxes-v2026-09.json POST /crm/objects/2026-09/taxes/search Effectuer une recherche sur les objets CRM d'un type spécifié. Ce point de terminaison vous permet de filtrer et de trier les objets en fonction de divers critères, et de récupérer des propriétés spécifiques des objets. Il est utile pour trouver des objets qui correspondent à certaines conditions ou pour récupérer un sous-ensemble de données à des fins d'analyse. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/taxes/update-tax specs/2026-09/crm-taxes-v2026-09.json PATCH /crm/objects/2026-09/taxes/{taxId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of tickets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/batch/create-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/batch/create Créer un lot d'objets CRM avec les propriétés spécifiées. Ce point de terminaison vous permet de créer plusieurs objets en une seule requête, ce qui peut être utile pour ajouter efficacement de grands jeux de données à votre compte HubSpot. La réponse inclut une copie de chaque objet créé, y compris les identifiants. > **Supported products** > **Required Scopes** # Archive a batch of tickets by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/batch/delete-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/batch/archive Archivez un lot d'objets CRM identifiés par leurs ID. Ce point de terminaison est utile pour déplacer plusieurs objets vers la corbeille en une seule requête, ce qui simplifie la gestion de grands jeux de données. > **Supported products** > **Required Scopes** # Read a batch of tickets by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/batch/get-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/batch/read Récupérez un lot d'objets CRM à l'aide de leurs ID internes ou de leurs valeurs de propriété uniques. Ce point de terminaison est utile pour récupérer plusieurs objets en une seule requête, ce qui peut aider à optimiser les performances et à réduire le nombre d'appels d'API nécessaires. Vous pouvez spécifier si les objets archivés doivent être inclus dans les résultats. > **Supported products** > **Required Scopes** # Update a batch of tickets by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/batch/update-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/batch/update Mettre à jour un lot d'objets CRM dans votre compte HubSpot. Ce point de terminaison vous permet de modifier plusieurs objets à la fois en fournissant leurs détails dans le corps de la requête. Il est utile pour les mises à jour en masse où vous devez modifier les propriétés de plusieurs objets simultanément. > **Supported products** > **Required Scopes** # Create or update a batch of tickets by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/batch/upsert-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/batch/upsert Créez ou mettez à jour un lot d'objets CRM en fonction de leurs valeurs de propriétés uniques. Ce point de terminaison vous permet de gérer efficacement plusieurs objets en une seule requête, en veillant à ce que les objets existants soient mis à jour et que les nouveaux soient créés. Il est utile pour synchroniser les données avec des systèmes externes ou pour maintenir des fiches d'informations à jour dans votre compte HubSpot. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/create-ticket specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets Créer un objet CRM avec les propriétés spécifiées et renvoyer une copie de l'objet, y compris son ID. Ce point de terminaison est utile pour ajouter de nouveaux objets à votre système CRM, vous permettant de définir les propriétés de l'objet lors de sa création. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/delete-ticket specs/2026-09/crm-tickets-v2026-09.json DELETE /crm/objects/2026-09/tickets/{ticketId} Déplacer un objet identifié par « {objectId} » vers la corbeille. Cette opération vous permet d'archiver un objet CRM spécifique par son ID, le retirant ainsi de l'utilisation active tout en le conservant dans le système pour une éventuelle restauration future. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/get-ticket specs/2026-09/crm-tickets-v2026-09.json GET /crm/objects/2026-09/tickets/{ticketId} Lisez un objet identifié par « objectId ». L'« objectId » fait référence à l'ID d'objet interne par défaut, ou facultativement à toute valeur de propriété unique telle que spécifiée par le paramètre de requête « objectId ». Vous pouvez contrôler ce qui est renvoyé via le paramètre de requête « properties ». Ce point de terminaison vous permet de récupérer des informations détaillées sur un objet CRM spécifique, y compris ses propriétés, ses associations et son historique. > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/get-tickets specs/2026-09/crm-tickets-v2026-09.json GET /crm/objects/2026-09/tickets Lisez une page d'objets d'un type spécifié dans votre compte HubSpot. Vous pouvez contrôler les données renvoyées en spécifiant les propriétés que vous souhaitez inclure dans la réponse. Ce point de terminaison prend en charge la pagination et vous permet de récupérer les ID d'objets associés et les fiches d'informations archivées. > **Supported products** > **Required Scopes** # API du CRM | Tickets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/guide Un ticket représente une demande de support ou d'aide d'un client. Les points de terminaison des tickets vous permettent de gérer ces données et de les synchroniser entre HubSpot et d'autres systèmes.  > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-98d91102-ed47-41b0-8304-23f04f12ed0f)** > **Exigences de portée** # Tickets Dans HubSpot, les tickets représentent des demandes d'aide des clients. Le suivi des tickets est effectué tout au long de votre processus d'assistance par des [statuts de pipeline](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines) jusqu'à leur fermeture. Les points de terminaison des tickets vous permettent de créer et de gérer des fiches d'informations de ticket ainsi que de synchroniser des données de ticket entre HubSpot et d'autres systèmes. Découvrez-en davantage sur les API d'objets, de fiches d'informations, de propriétés et d'associations dans le [guide Comprendre le CRM](/docs/guides/crm/understanding-the-crm). Pour plus d'informations générales sur les objets et les fiches d'informations dans HubSpot, [découvrez comment gérer votre base de données CRM](https://knowledge.hubspot.com/fr/get-started/manage-your-crm-database). ## Créer des tickets Pour créer de nouveaux tickets, effectuez une requête `POST` à `/crm/v3/objects/tickets`. Dans votre requête, incluez les données de votre ticket dans un objet de propriétés. Vous pouvez également ajouter un objet d'association pour associer votre nouveau ticket à des fiches d'informations existantes (par exemple, des contacts ou des entreprises) ou à des activités (par exemple, des réunions ou des notes). ### Propriétés Les détails du ticket sont stockés dans des propriétés de ticket. Il existe des [propriétés de ticket HubSpot par défaut](https://knowledge.hubspot.com/fr/properties/hubspots-default-ticket-properties), mais vous pouvez également créer des [propriétés personnalisées](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties). Lorsque vous créez un nouveau ticket, vous devez inclure les propriétés suivantes dans votre requête : `subject` (le nom du ticket), `hs_pipeline_stage` (le statut du ticket) et, si vous avez plusieurs pipelines, `hs_pipeline`. Si aucun pipeline n'est spécifié, le pipeline par défaut sera utilisé. Pour afficher toutes les propriétés disponibles, vous pouvez récupérer une liste des propriétés de tickets de votre compte en effectuant une requête `GET` à `/crm/v3/properties/tickets`. Découvrez-en davantage sur l'[API des propriétés](/docs/api-reference/crm-properties-v3/guide). > [!WARNING] > > **Remarque** : vous devez utiliser l'ID interne d'un statut de ticket ou d'un pipeline lors de la création d'un ticket via l'API. L'ID interne est un numéro, qui sera également retourné lorsque vous récupérerez des tickets via l'API. Vous pouvez trouver le statut de ticket ou l'ID interne d'un pipeline dans les [paramètres de votre pipeline de tickets.](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines) Par exemple, pour créer un nouveau ticket, votre requête peut ressembler à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "hs_pipeline": "0", "hs_pipeline_stage": "1", "hs_ticket_priority": "HIGH", "subject": "troubleshoot report" } } ``` ### Associations Lorsque vous créez un nouveau ticket, vous pouvez également associer le ticket à des [fiches d'informations](https://knowledge.hubspot.com/fr/records/associate-records) ou [activités](https://knowledge.hubspot.com/fr/records/associate-activities-with-records) existantes en incluant un objet d'associations. Par exemple, pour associer un nouveau ticket à un contact et à une entreprise existants, votre requête ressemblerait à ce qui suit : **JSON** ```json theme={null} ///Example request body { "properties": { "hs_pipeline": "0", "hs_pipeline_stage": "1", "hs_ticket_priority": "HIGH", "subject": "troubleshoot report" }, "associations": [ { "to": { "id": 201 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 16 } ] }, { "to": { "id": 301 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 26 } ] } ] } ``` Dans l'objet d'association, vous devez ajouter les éléments suivants : | Paramètre | Description | | - | - | | `to` | La fiche d'informations ou l'activité à laquelle vous souhaitez associer le ticket, en fonction de sa valeur unique `id`. | | `types` | Le type d'association entre le ticket et la fiche d'informations/l'activité. Inclut `associationCategory` et `associationTypeId`. Les ID de types d'association par défaut sont répertoriés [ici](/docs/api-reference/crm-associations-v4/guide#association-type-id-values), ou vous pouvez récupérer la valeur des types d'associations personnalisés (c'est-à-dire les libellés) via l'[API des associations](/docs/api-reference/crm-associations-v4/guide#retrieve-association-types). | ## Récupérer des tickets Vous pouvez récupérer des tickets individuellement ou par lots. * Pour récupérer un ticket individuel, effectuez une requête `GET` à `/crm/v3/objects/tickets/{ticketId}`. * Pour demander une liste de tous les tickets, effectuez une requête `GET` à `/crm/v3/objects/tickets`. Pour ces points de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête : | Paramètre | Description | | - | - | | `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si le ticket demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si le ticket demandé n'a pas de valeur pour une propriété, il n'apparaîtra pas dans la réponse. | | `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) | * Pour récupérer un lot de tickets spécifiques par ID de fiche d'informations ou selon une [propriété d'identifiant unique personnalisée](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties), effectuez une requête `POST` à `crm/v3/objects/tickets/batch/read`. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](/docs/api-reference/crm-associations-v4/guide). Pour le point de terminaison de lecture par lot, vous pouvez également utiliser le paramètre `idProperty` facultatif pour récupérer les tickets en fonction d'une [propriété d'identifiant unique](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) personnalisée. Par défaut, les valeurs d'`id` dans la requête font référence à l'ID de fiche d'informations (`hs_object_id`), de sorte que le paramètre `idProperty` n'est pas requis lors de la récupération par ID de fiche d'informations. Pour utiliser une propriété de valeur unique personnalisée pour récupérer des tickets, vous devez inclure le paramètre `idProperty`. Par exemple, pour récupérer un lot de tickets, votre requête peut ressembler à ce qui suit : ```json theme={null} ///Example request body with record ID { "properties": ["subject", "hs_pipeline_stage", "hs_pipeline"], "inputs": [ { "id": "4444888856" }, { "id": "666699988" } ] } ``` ```json theme={null} ///Example request body with a unique value property { "properties": ["subject", "hs_pipeline_stage", "hs_pipeline"], "idProperty": "uniquepropertyexample", "inputs": [ { "id": "abc" }, { "id": "def" } ] } ``` Pour récupérer des tickets avec des valeurs actuelles et historiques pour une propriété, votre requête pourrait ressembler à : ```json theme={null} ///Example request body with record ID (current and historical values) { "propertiesWithHistory": ["hs_pipeline_stage"], "inputs": [ { "id": "4444888856" }, { "id": "666699988" } ] } ``` ## Mettre à jour des tickets Vous pouvez mettre à jour des tickets individuellement ou par lots. Pour les tickets existants, l'ID de fiche d'informations est une valeur unique par défaut que vous pouvez utiliser pour mettre à jour le ticket via l'API, mais vous pouvez également identifier et mettre à jour les tickets à l'aide de [propriétés d'identifiant unique personnalisées.](/docs/api-reference/crm-properties-v3/guide#create-unique-identifier-properties) * Pour mettre à jour un ticket individuel avec son ID de fiche d'informations, effectuez une requête `PATCH` à `/crm/v3/objects/tickets/{ticketId}` et incluez les données que vous souhaitez mettre à jour. * Pour mettre à jour plusieurs tickets, effectuez une requête `POST` vers `/crm/v3/objects/tickets/batch/update`. Dans le corps de la requête, incluez un tableau avec les identifiants des tickets et les propriétés que vous souhaitez mettre à jour. ### Associer des tickets existants à des fiches d'informations ou activités Pour associer un ticket à d'autres fiches d'informations de CRM ou à une activité, effectuez une requête `PUT` à `/crm/v3/objects/tickets/{ticketId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. > [!NOTE] > > Pour récupérer la valeur `associationTypeId`, reportez-vous à [cette liste](/docs/api-reference/crm-associations-v4/guide#association-type-id-values) de valeurs par défaut ou effectuez une requête `GET` à `/crm/v4/associations/{fromObjectType}/{toObjectType}/labels`. Découvrez-en davantage sur l'[API des associations.](/docs/api-reference/crm-associations-v4/guide) ### Supprimer une association Pour supprimer une association entre un ticket et une fiche d'informations ou une activité, effectuez une requête `DELETE` à l'URL suivante : `/crm/v3/objects/tickets/{ticketId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`. ## Épingler une activité à un ticket Vous pouvez épingler une activité à une fiche d'informations d'un ticket via l'API en incluant le champ `hs_pinned_engagement_id` dans votre requête. Dans le champ, incluez l'`id` de l'activité à épingler, qui peut être récupéré via les [API d'engagement](/docs/api-reference/overview). Vous pouvez épingler une activité par fiche d'informations, et l'activité doit déjà être associée au ticket avant l'épinglage. Pour définir ou mettre à jour l'activité épinglée d'un ticket, votre requête peut ressembler à : ```json theme={null} ///Example request body PATCH /crm/v3/objects/tickets/{ticketId} { "properties": { "hs_pinned_engagement_id": 123456789 } } ``` Vous pouvez également créer un ticket, l'associer à une activité existante et épingler l'activité dans la même requête. Par exemple : ```json theme={null} ///Example request body POST /crm/v3/objects/tickets { "properties": { "hs_pipeline": "0", "hs_pipeline_stage": "1", "hs_ticket_priority": "HIGH", "subject": "troubleshoot report", "hs_pinned_engagement_id": 123456789 }, "associations": [ { "to": { "id": 123456789 }, "types": [ { "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 227 } ] } ] } ``` ## Supprimer des tickets Vous pouvez supprimer des tickets individuellement ou par lots, ce qui placera le ticket dans la corbeille dans HubSpot. Vous pourrez ensuite [restaurer le ticket dans HubSpot](https://knowledge.hubspot.com/fr/records/restore-deleted-records). Pour supprimer un ticket avec son ID, effectuez une requête `DELETE` vers `/crm/v3/objects/tickets/{ticketId}`. Pour en savoir plus sur la suppression des tickets, consultez la [documentation de référence](/docs/api-reference/crm-tickets-v3/guide#delete-%2Fcrm%2Fv3%2Fobjects%2Ftickets%2F%7Bticketid%7D). # Merge two tickets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/merge-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/merge Fusionner deux objets CRM du même type dans votre compte HubSpot. Cette opération combine les propriétés et les associations des objets spécifiés en un seul objet, identifié par l'ID de l'objet principal. > **Supported products** > **Required Scopes** # Ticket object definition Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/object-definition # Search for tickets Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/search/search-tickets specs/2026-09/crm-tickets-v2026-09.json POST /crm/objects/2026-09/tickets/search Rechercher des objets CRM d'un type spécifié à l'aide de divers filtres et critères. Ce point de terminaison vous permet d'effectuer des recherches complexes en spécifiant des groupes de filtres, des propriétés et des options de tri. Il est utile pour récupérer des objets spécifiques basés sur des paramètres de recherche détaillés. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/update-ticket specs/2026-09/crm-tickets-v2026-09.json PATCH /crm/objects/2026-09/tickets/{ticketId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Update Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/tickets/update-ticket-objectId specs/2026-09/crm-tickets-v2026-09.json PATCH /crm/objects/2026-09/tickets/{ticketId} Effectuer une mise à jour partielle d'un objet identifié par « {objectId} ». « {objectId} » fait référence par défaut à l'ID interne de l'objet, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de demande « idProperty ». Les valeurs des propriétés fournies seront écrasées. Les propriétés en lecture seule et inexistantes seront ignorées. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Create a batch of users Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/batch/create-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/batch/create Créez plusieurs utilisateurs en une seule requête en fournissant un lot de propriétés et d'associations utilisateur. Ce point de terminaison renvoie les utilisateurs créés ainsi que leurs identifiants. > **Supported products** > **Required Scopes** # Archive a batch of users by ID Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/batch/delete-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/batch/archive Archivez plusieurs utilisateurs par leur identifiant en une seule requête. Cette opération déplace les utilisateurs spécifiés vers la corbeille, les désactivant ainsi de manière effective. > **Supported products** > **Required Scopes** # Read a batch of users by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/batch/get-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/batch/read Récupérer les fiches d'informations par leur ID ou inclure le paramètre « idProperty » pour récupérer les fiches d'informations par une propriété de valeur unique personnalisée. > **Supported products** > **Required Scopes** # Update a batch of users by internal ID, or unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/batch/update-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/batch/update Mettez à jour plusieurs fiches d'informations utilisateur en une seule requête en spécifiant leurs identifiants internes ou leurs valeurs de propriété uniques. Cette opération permet le traitement par lots des données utilisateur, garantissant ainsi des mises à jour efficaces sur plusieurs profils utilisateur. > **Supported products** > **Required Scopes** # Create or update a batch of users by unique property values Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/batch/upsert-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/batch/upsert Créez ou mettez à jour des fiches d'informations identifiées par une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. > **Supported products** > **Required Scopes** # Create Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/create-user specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users Créez un utilisateur avec les propriétés données et renvoyez une copie de l'objet, y compris l'ID. La documentation et des exemples pour la création d'utilisateurs standard sont fournis. > **Supported products** > **Required Scopes** # Archive Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/delete-user specs/2026-09/crm-users-v2026-09.json DELETE /crm/objects/2026-09/users/{userId} Déplacer un objet identifié par « {userId} » dans la corbeille. > **Supported products** > **Required Scopes** # Read Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/get-user specs/2026-09/crm-users-v2026-09.json GET /crm/objects/2026-09/users/{userId} Lire un objet identifié par « {userId} ». « {userId} » fait référence à l'ID d'objet interne par défaut, ou éventuellement à toute valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # List Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/get-users specs/2026-09/crm-users-v2026-09.json GET /crm/objects/2026-09/users Lire une page d'utilisateurs. Contrôlez ce qui est renvoyé via le paramètre de requête « propriétés ». > **Supported products** > **Required Scopes** # Users API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/guide # Search for users based on specified criteria. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/search/search-users specs/2026-09/crm-users-v2026-09.json POST /crm/objects/2026-09/users/search Effectuez une recherche d'utilisateurs à l'aide de filtres, de propriétés et d'options de tri définis. La requête doit inclure une requête de recherche et peut renvoyer jusqu'à 200 résultats par requête. > **Supported products** > **Required Scopes** # Update user Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/objects/users/update-user specs/2026-09/crm-users-v2026-09.json PATCH /crm/objects/2026-09/users/{userId} Effectue une mise à jour partielle d'un objet identifié par « {userId} » ou, éventuellement, une valeur de propriété unique spécifiée par le paramètre de requête « idProperty ». « {userId} » fait référence à l'ID d'objet interne par défaut, et le paramètre de requête « idProperty » fait référence à une propriété dont les valeurs sont uniques pour l'objet. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur. Les valeurs des propriétés peuvent être effacées en passant une chaîne vide. > **Supported products** > **Required Scopes** # Retrieve an owner Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/owners/get-owner specs/2026-09/crm-crm-owners-v2026-09.json GET /crm/owners/2026-09/{ownerId} Récupérer les détails d'un propriétaire spécifique à l'aide de son « id » ou de son « userId ». > **Supported products** > **Required Scopes** # Retrieve all owners Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/owners/get-owners specs/2026-09/crm-crm-owners-v2026-09.json GET /crm/owners/2026-09 Récupérer une liste paginée de propriétaires depuis votre compte HubSpot. Ce point de terminaison permet de filtrer par e-mail et prend en charge la pagination via le paramètre « after ». Vous pouvez également spécifier le nombre maximal de résultats par page et choisir d'inclure les propriétaires archivés dans la réponse. > **Supported products** > **Required Scopes** # API du CRM | Propriétaires Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/owners/guide HubSpot utilise les propriétaires pour attribuer des objets de CRM à des personnes spécifiques. Ces points de terminaison sont utilisés pour obtenir une liste des propriétaires disponibles pour un compte. > **[Run in Postman](https://app.getpostman.com/run-collection/78f10c037170a05f3b3a)** > **Exigences de portée** # Propriétaires Les propriétaires HubSpot [attribuent](https://knowledge.hubspot.com/records/how-to-set-a-record-owner) des utilisateurs spécifiques à des fiches d'informations, des activités ou des tâches marketing, et peuvent être utilisés dans des jetons de personnalisation pour votre contenu. Les propriétaires sont automatiquement créés et mis à jour dans HubSpot lorsque de nouveaux utilisateurs sont ajoutés ou que les propriétaires existants sont synchronisés depuis [Salesforce](https://knowledge.hubspot.com/salesforce/install-the-hubspot-salesforce-integration). Les points de terminaison de l'API des propriétaires sont en lecture seule. Vous pouvez donc les utiliser pour récupérer les informations d'identification d'un propriétaire, y compris l'ID du propriétaire. Cet identifiant peut ensuite être utilisé pour attribuer la propriété à des fiches d'informations de CRM dans HubSpot, via une intégration ou des appels d'API de modification de propriété. ## Récupérer une liste de propriétaires Pour récupérer les propriétaires actuels de votre compte, effectuez une demande `GET` à `/crm/v3/owners`. La réponse renverra le nom de chaque utilisateur, son adresse e-mail, les valeurs de son identifiant, les dates de création/mise à jour et, le cas échéant, les informations de l'équipe. Deux valeurs d'ID sont renvoyées, qui sont utilisées à des fins différentes : * `id` : l'ID du propriétaire. Cette valeur doit être utilisée lors de la récupération d'informations sur un propriétaire spécifique et lors de l'attribution d'un propriétaire à une fiche d'informations ou à une activité. * `userId` : l'ID de l'utilisateur. Cette valeur peut être utilisée pour spécifier des utilisateurs dans l'[API des paramètres](/docs/api-reference/settings-user-provisioning-v3/guide), mais entraînera une erreur si elle est utilisée pour attribuer la propriété. Votre réponse ressemblera à ce qui suit : ```json theme={null} ///Example response GET crm/v3/owners { "results": [ { "id": "41629779", "email": "email@hubspot.com", "type": "PERSON", "firstName": "HubSpot", "lastName": "Test Owner", "userId": 9586504, "userIdIncludingInactive": 9586504, "createdAt": "2019-12-25T13:01:35.228Z", "updatedAt": "2023-08-22T13:40:26.790Z", "archived": false, "teams": [ { "id": "368389", "name": "Sales Team", "primary": true } ] }, { "id": "60158084", "email": "email@gmail.com", "type": "PERSON", "firstName": "Test", "lastName": "Email", "userId": 9274996, "userIdIncludingInactive": 9274996, "createdAt": "2021-02-10T17:59:04.891Z", "updatedAt": "2023-02-09T17:41:52.767Z", "archived": false, "teams": [ { "id": "368389", "name": "Sales Team", "primary": true } ] }, { "id": "81538190", "email": "salesmanager@hubspot.com", "type": "PERSON", "firstName": "Sales", "lastName": "Manager Example", "userId": 3892666, "userIdIncludingInactive": 3892666, "createdAt": "2021-05-27T16:55:57.242Z", "updatedAt": "2022-08-02T18:34:35.039Z", "archived": false } ] } ``` Vous pouvez également récupérer des propriétaires archivés pour afficher les utilisateurs qui ont été désactivés. Pour ce faire, ajoutez le paramètre `archived` avec la valeur `true`. Pour les utilisateurs archivés, il y a toujours une valeur `id`, mais la valeur `userId` sera `null`. Au lieu de cela, l'ID utilisateur est stocké dans le champ `userIdIncludingInactive`. Par exemple : ```json theme={null} ///Example response GET crm/v3/owners/?archived=true { "results": [ { "id": "42103462", "email": "useremail@hubspot.com", "type": "PERSON", "firstName": "", "lastName": "", "userId": null, "userIdIncludingInactive": 9685555, "createdAt": "2020-01-09T20:28:50.080Z", "updatedAt": "2020-01-09T20:28:50.080Z", "archived": true } ] } ``` ## Récupérer des informations sur un propriétaire individuel Pour récupérer un propriétaire spécifique, effectuez une demande `GET` à `/crm/v3/owners/{ownerId}`. Vous devez utiliser la valeur `id` pour spécifier le propriétaire pour lequel vous souhaitez obtenir plus de détails. > [!WARNING] > > ### Remarque: > > La valeur `updatedAt` de la réponse change en fonction des mises à jour apportées à l'objet Propriétaire lui-même. Elle ne sera pas mise à jour pour des modifications apportées à l'objet d'utilisateur. Par exemple, la modification des autorisations d'un utilisateur ne mettra pas à jour la valeur `updatedAt`. # Create pipeline Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/create-pipeline specs/2026-09/crm-pipelines-v2026-09.json POST /crm/pipelines/2026-09/{objectType} Créer un nouveau pipeline pour un type d'objet spécifié dans votre compte HubSpot. Ce point de terminaison nécessite un corps de requête JSON contenant les détails du pipeline, y compris son libellé, son ordre d'affichage et ses étapes. L'opération renvoie les détails du pipeline nouvellement créé en cas de succès. > **Supported products** > **Required Scopes** # Delete pipeline Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/delete-pipeline specs/2026-09/crm-pipelines-v2026-09.json DELETE /crm/pipelines/2026-09/{objectType}/{pipelineId} Supprimer un pipeline spécifique dans votre compte HubSpot, identifié par son type d'objet et son ID de pipeline. Cette opération peut éventuellement valider les références et les utilisations des étapes de transaction avant la suppression afin de garantir l'intégrité des données. > **Supported products** > **Required Scopes** # Retrieve pipeline Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/get-pipeline specs/2026-09/crm-pipelines-v2026-09.json GET /crm/pipelines/2026-09/{objectType}/{pipelineId} Récupérer des informations détaillées sur un pipeline spécifique dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux propriétés et aux étapes du pipeline identifié par le pipelineId et l'objectType donnés. Il est utile pour obtenir la configuration et le statut actuels d'un pipeline. > **Supported products** > **Required Scopes** # Retrieve pipelines Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/get-pipelines specs/2026-09/crm-pipelines-v2026-09.json GET /crm/pipelines/2026-09/{objectType} Récupérez tous les pipelines pour un type d'objet spécifié dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux informations de pipeline sans pagination, ce qui est utile pour obtenir une liste complète des pipelines associés à un type d'objet particulier. > **Supported products** > **Required Scopes** # Retrieve audit logs Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/get-pipelines-audit specs/2026-09/crm-pipelines-v2026-09.json GET /crm/pipelines/2026-09/{objectType}/{pipelineId}/audit Récupérez les journaux d'audit d'un pipeline spécifique dans votre compte HubSpot. Ce point de terminaison fournit des informations détaillées sur les modifications apportées au pipeline en question, ce qui peut être utile pour suivre les modifications et comprendre l'historique de la configuration de celui-ci. > **Supported products** > **Required Scopes** # API du CRM | Pipelines Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/guide Les points de terminaison des pipelines sont utilisés pour consulter, créer et gérer des pipelines dans le HubSpot CRM et les outils de service client. > **[Run in Postman](https://app.getpostman.com/run-collection/2c67a53481327b3678ec)** > **Exigences de portée** # Pipelines Dans HubSpot, les phases de transaction et les statuts de ticket sont définis dans un pipeline. Pour les ventes, les pipelines peuvent être utilisés pour prédire le chiffre d'affaires et identifier les obstacles. Pour le service client, les pipelines peuvent être utilisés pour gérer les statuts de tickets et analyser les obstacles. Chaque phase d'un pipeline est identifiée par un ID interne unique. Autrement dit, il ne peut y avoir qu'un membre d'un pipeline. Chaque pipeline contient toujours au moins une phase et chaque compte au moins un pipeline. ### Pipelines par défaut Chaque compte contient initialement un pipeline par défaut avec « Par défaut » comme `pipelineId`. Sur les comptes présentant un seul pipeline, la propriété du pipeline pour tout objet sera automatiquement définie sur « Par défaut ». Sur les comptes avec plusieurs pipelines, si vous définissez une phase qui n'est pas dans le pipeline par défaut, vous devrez également définir la propriété de pipeline correspondante. ### Pipelines multiples Seuls les comptes Hub Sales Pro ou Entreprise peuvent créer [plusieurs pipelines de transaction](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines). De même, vous devez disposer d'un abonnement Hub Services Pro ou Entreprise pour créer [plusieurs pipelines de tickets](https://knowledge.hubspot.com/fr/object-settings/set-up-and-customize-pipelines). Découvrez-en davantage sur les [niveaux d'abonnement de HubSpot ici](https://legal.hubspot.com/fr/hubspot-product-and-services-catalog). **Exemples de cas d'utilisation :** Lorsque vous travaillez avec des transactions, un compte peut avoir un pipeline pour « Nouvelles ventes » et un autre pour « Renouvellements de contrat ». Pour les tickets, vous disposez d'une file d'attente de support principale et d'une file d'attente distincte pour les remontées. Chacune de ces files constitue un pipeline de tickets distinct. Les points de terminaison des pipelines peuvent être utilisés pour synchroniser un pipeline ou un autre vers un CRM externe. # Update pipeline (Partial) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/partially-update-pipeline specs/2026-09/crm-pipelines-v2026-09.json PATCH /crm/pipelines/2026-09/{objectType}/{pipelineId} Mettre à jour un pipeline existant dans votre compte HubSpot. Ce point de terminaison vous permet de modifier des propriétés spécifiques d'un pipeline, telles que son libellé, son ordre d'affichage ou son statut archivé. Utilisez cette fonction pour maintenir les données de votre pipeline à jour et organisées. > **Supported products** > **Required Scopes** # Delete Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/delete-pipeline-rules specs/2026-09/crm-pipeline-governance-v2026-09.json DELETE /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId} Supprimer un ensemble spécifique de règles de pipeline associées à un type d'objet et à un ID de pipeline donnés dans votre compte HubSpot. Cette opération est utile pour supprimer des règles obsolètes ou incorrectes d'un pipeline. Assurez-vous que l'objectTypeId et le pipelineId sont correctement spécifiés afin d'éviter les suppressions involontaires. > **Supported products** > **Required Scopes** # Retrieve Approval Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/get-pipeline-approvals specs/2026-09/crm-pipeline-governance-v2026-09.json GET /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId}/approvals/{objectId} Récupérer le statut d'approbation d'un objet spécifique au sein d'un pipeline. Ce point de terminaison est utile pour vérifier l'état d'approbation actuel d'un objet, ce qui peut être essentiel dans les workflows qui nécessitent des étapes de validation ou d'autorisation. > **Supported products** > **Required Scopes** # Retrieve rules Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/get-pipeline-permissions specs/2026-09/crm-pipeline-governance-v2026-09.json GET /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId} Récupérez les règles associées à un pipeline spécifique dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder aux règles de validation de la gouvernance et aux étapes d'approbation pour le pipeline spécifié. Il est utile pour comprendre les contraintes et les processus d'approbation appliqués au pipeline. > **Supported products** > **Required Scopes** # Retrieve permissions Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/get-pipeline-stage-permissions specs/2026-09/crm-pipeline-governance-v2026-09.json GET /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId}/stage-edit-permissions Récupérer les autorisations de modification des étapes pour un pipeline spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de consulter les autorisations définies pour la modification des étapes au sein d'un pipeline donné, identifié par son type d'objet et son ID de pipeline. Cela peut être utile pour gérer l'accès et garantir que seuls les utilisateurs autorisés peuvent modifier les étapes du pipeline. > **Supported products** > **Required Scopes** # Pipeline Rules API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/guide # Update rules (Partial) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/partially-update-pipeline-rules specs/2026-09/crm-pipeline-governance-v2026-09.json PATCH /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId} Mettre à jour les règles d'un pipeline spécifique au sein d'un type d'objet donné dans HubSpot. Cette opération vous permet de modifier les règles de validation de gouvernance et les étapes d'approbation pour le pipeline spécifié. Elle est utile pour maintenir ou modifier les règles de workflow associées à vos pipelines. > **Supported products** > **Required Scopes** # Start Approval Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/start-pipeline-approval specs/2026-09/crm-pipeline-governance-v2026-09.json POST /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId}/approvals/start Lancez le processus d'approbation pour un pipeline spécifique au sein d'un type d'objet donné. Ce point de terminaison est utile pour déclencher des workflows d'approbation associés aux étapes du pipeline, garantissant que les approbations nécessaires sont obtenues avant de poursuivre les actions dans le pipeline. > **Supported products** > **Required Scopes** # Update rules (Replace) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/rules/update-pipeline-rules specs/2026-09/crm-pipeline-governance-v2026-09.json PUT /crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId} Mettre à jour les règles d'un pipeline spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de modifier les règles de validation de gouvernance et les étapes d'approbation associées à un pipeline. Il nécessite de spécifier le type d'objet et les identifiants du pipeline. > **Supported products** > **Required Scopes** # Create Stage Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/stages/create-pipeline-stage specs/2026-09/crm-pipelines-v2026-09.json POST /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages Créer une nouvelle étape au sein d’un pipeline spécifié pour un type d’objet donné dans HubSpot. Ce point de terminaison est utile pour ajouter de nouvelles étapes à un pipeline, permettant un suivi et une gestion plus granulaires des objets à travers les différentes étapes d’un processus. > **Supported products** > **Required Scopes** # Delete stage Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/stages/delete-pipeline-stage specs/2026-09/crm-pipelines-v2026-09.json DELETE /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId} Supprimez une phase spécifique d'un pipeline dans votre compte HubSpot. Cette opération est utile pour diriger et maintenir les étapes de votre pipeline en supprimant celles qui ne sont plus nécessaires. Assurez-vous que toutes les références à la phase sont traitées de manière appropriée avant la suppression. > **Supported products** > **Required Scopes** # Retrieve stage Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/stages/get-pipeline-stage specs/2026-09/crm-pipelines-v2026-09.json GET /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId} Récupérez les détails d'une phase spécifique au sein d'un pipeline pour un type d'objet donné dans HubSpot. Ce point de terminaison est utile pour accéder aux informations sur une phase particulière, telles que son libellé, son ordre d'affichage et ses métadonnées, qui peuvent être utilisées pour gérer ou analyser les étapes de pipeline. > **Supported products** > **Required Scopes** # Retrieve stage audit Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/stages/get-pipelines-stage-audit specs/2026-09/crm-pipelines-v2026-09.json GET /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId}/audit Récupérez les informations d'audit pour une étape spécifique au sein d'un pipeline dans votre compte HubSpot. Ce point de terminaison fournit des détails sur les actions effectuées sur l'étape spécifiée, ce qui peut être utile pour suivre les changements et comprendre l'historique des modifications. > **Supported products** > **Required Scopes** # Update stage Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/stages/update-pipeline-stage specs/2026-09/crm-pipelines-v2026-09.json PUT /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId} Mettez à jour une étape spécifique au sein d'un pipeline pour un type d'objet donné dans HubSpot. Ce point de terminaison vous permet de modifier les détails d'une étape, tels que son libellé, son ordre d'affichage et ses métadonnées. Utilisez-le pour maintenir vos étapes de pipeline à jour et alignées sur vos processus métier. > **Supported products** > **Required Scopes** # Update pipeline (Replace) Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/pipelines/update-pipeline specs/2026-09/crm-pipelines-v2026-09.json PUT /crm/pipelines/2026-09/{objectType}/{pipelineId} Mettre à jour un pipeline existant dans votre compte HubSpot en spécifiant l'ID du pipeline et le type d'objet. Cette opération vous permet de modifier les propriétés du pipeline, telles que son libellé, son ordre d'affichage et ses étapes. Assurez-vous que le corps de la requête contient les champs nécessaires pour une mise à jour réussie. > **Supported products** > **Required Scopes** # Create a batch of properties Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/batch/create-properties specs/2026-09/crm-properties-v2026-09.json POST /crm/properties/2026-09/{objectType}/batch/create Créez un lot de propriétés en utilisant les mêmes règles que lors de la création d'une propriété individuelle. > **Supported products** > **Required Scopes** # Archive a batch of properties Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/batch/delete-properties specs/2026-09/crm-properties-v2026-09.json POST /crm/properties/2026-09/{objectType}/batch/archive Archiver une liste de propriétés fournie. Cette méthode renverra une réponse « 204 No Content » en cas de succès, quel que soit l'état initial de la propriété (par exemple, active, déjà archivée, inexistante). > **Supported products** > **Required Scopes** # Read a batch of properties Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/batch/get-properties specs/2026-09/crm-properties-v2026-09.json POST /crm/properties/2026-09/{objectType}/batch/read Lire une liste de propriétés fournie. > **Supported products** > **Required Scopes** # Create a property Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/create-property specs/2026-09/crm-properties-v2026-09.json POST /crm/properties/2026-09/{objectType} Créer et renvoyer une copie d'une nouvelle propriété pour le type d'objet spécifié. > **Supported products** > **Required Scopes** # Archive a property Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/delete-property specs/2026-09/crm-properties-v2026-09.json DELETE /crm/properties/2026-09/{objectType}/{propertyName} Déplacer une propriété identifiée par {propertyName} vers la corbeille. > **Supported products** > **Required Scopes** # Read all properties Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/get-properties specs/2026-09/crm-properties-v2026-09.json GET /crm/properties/2026-09/{objectType} Lire toutes les propriétés existantes pour le type d'objet et le compte HubSpot spécifiés. > **Supported products** > **Required Scopes** # Read a property Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/get-property specs/2026-09/crm-properties-v2026-09.json GET /crm/properties/2026-09/{objectType}/{propertyName} Lire une propriété identifiée par {propertyName}. > **Supported products** > **Required Scopes** # API du CRM | Propriétés Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/guide Les points de terminaison de propriétés de CRM permettent de gérer propriétés personnalisées ainsi que les détails par défaut des propriétés pour tout objet. > **[Run in Postman](https://app.getpostman.com/run-collection/33493e154afc38038092)** > **Exigences de portée** Utilisez les propriétés pour stocker des informations sur les fiches d'informations du CRM. HubSpot fournit un ensemble de propriétés par défaut pour chaque objet de CRM. Vous pouvez également créer et gérer vos propres propriétés personnalisées [dans HubSpot](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties) ou à l'aide de l'API de propriétés. Lors de la création de propriétés, il est important de réfléchir à l'architecture de vos données. Dans de nombreux cas, la création de propriétés personnalisées pour les objets standard de HubSpot est la bonne marche à suivre. Cependant, vous devrez parfois créer un [objet personnalisé](/docs/api-reference/crm-custom-objects-v3/guide) distinct avec son propre ensemble de propriétés. ## Propriétés par défaut Les objets de CRM sont définis par un `type` principal et un ensemble de `properties`. Chaque type contient un ensemble de propriétés standards, représenté par une carte de noms et de valeurs. Découvrez-en davantage sur les propriétés par défaut pour différents objets : * [Contacts](https://knowledge.hubspot.com/fr/properties/hubspots-default-contact-properties) * [Entreprises](https://knowledge.hubspot.com/fr/properties/hubspot-crm-default-company-properties) * [Entreprises](https://knowledge.hubspot.com/fr/properties/hubspots-default-deal-properties) * [Tickets](https://knowledge.hubspot.com/fr/properties/hubspots-default-ticket-properties) * [Activités](https://knowledge.hubspot.com/fr/properties/hubspots-default-activity-properties) (appels, e-mails, réunions, notes, tâches) * [Leads](https://knowledge.hubspot.com/fr/properties/hubspots-default-lead-properties)(***Sales Hub*** *Pro* et *Entreprise*) ## Groupes de propriétés Les [groupes de propriétés](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties#create-and-edit-property-groups) sont utilisés pour regrouper des propriétés associées. Toutes les propriétés regroupées apparaîtront les unes à côté des autres sur les fiches d'informations HubSpot. Si votre intégration crée des propriétés d'objets personnalisés, une propriété personnalisée facilitera l'identification de ces données. ## Type de propriété et valeurs fieldType Lorsque vous créez ou mettez à jour des propriétés, les valeurs `type` et `fieldType` sont obligatoires. La valeur `type` détermine le type de propriété, c'est-à-dire une chaîne ou un nombre. La propriété `fieldType` détermine la façon dont la propriété apparaîtra dans HubSpot ou sur un formulaire, c'est-à-dire en tant que de texte brut, menu déroulant ou sélecteur de dates. Dans le tableau ci-dessous, découvrez les valeurs de propriété `type` et `fieldType` disponibles. | `type` | Description | Valeurs `fieldType` valides | | - | - | - | | `bool` | Champ contenant des options binaires (par exemple : `Yes` ou `No`, `True` ou `False`). | `booleancheckbox`, `calculation_equation` | | `enumeration` | Une chaîne représentant un ensemble d'options séparées par un point-virgule. | `booleancheckbox`, `checkbox`, `radio`, `select`, `calculation_equation` | | `date` | Une valeur représentant un jour, un mois et une année spécifiques. Les valeurs doivent être représentées au format UTC et peuvent être formatées sous forme de [chaînes ISO 8601 ou d'horodatages EPOCH en millisecondes](#add-values-to-date-and-datetime-properties) (c.-à-d. minuit UTC). | `date` | | `datetime` | Une valeur représentant un jour, un mois, une année et une heure spécifiques. Les valeurs doivent être représentées au format UTC et peuvent être formatées sous forme de [chaînes ISO 8601 ou d'horodatages UNIX en millisecondes](#add-values-to-date-and-datetime-properties). | `date` | | `string` | Une chaîne de texte brut limitée à 65 536 caractères. | `file`, `text`, `textarea`, `calculation_equation`, `html`, `phonenumber` | | `number` | Une valeur numérique contenant des chiffres et au maximum une décimale. | `number`, `calculation_equation` | | `object_coordinates` | Valeur de texte utilisée pour référencer d'autres objets HubSpot, utilisée uniquement pour les propriétés internes. Les propriétés de ce type ne peuvent pas être créées ou modifiées et ne sont pas visibles dans HubSpot. | `text` | | `json` | Valeur de texte stockée au format JSON, utilisée uniquement pour les propriétés internes. Les propriétés de ce type ne peuvent pas être créées ou modifiées et ne sont pas visibles dans HubSpot. | `text` | Valeurs valides pour `fieldType` incluent : | Fieldtype | Description | | - | - | | `booleancheckbox` | Une entrée qui permet aux utilisateurs de sélectionner Oui ou Non. Lorsque vous l'utilisez dans un formulaire, cette case sera affichée comme une case à cocher unique. Découvrez comment [ajouter une valeur aux propriétés de case à cocher unique](#add-values-to-checkbox-type-properties). | | `calculation_equation` | Une équation personnalisée qui peut calculer des valeurs en fonction d'autres valeurs de propriété et/ou d'associations. Découvrez comment définir des [propriétés calculées](#create-calculation-properties). | | `checkbox` | Une liste de cases à cocher qui permet à un utilisateur de sélectionner plusieurs options à partir d'un ensemble d'options pour la propriété. Découvrez comment [formater des valeurs lors de la mise à jour de propriétés avec plusieurs cases à cocher](#add-values-to-checkbox-type-properties). | | `date` | Une valeur de date, affichée comme un sélecteur de date. | | `file` | Permet de télécharger un fichier sur une fiche d'informations ou via un formulaire. Stocke un ID de fichier. | | `html` | Une chaîne, restituée dans un format HTML nettoyé, qui permet l'utilisation d'un éditeur de texte enrichi pour la propriété. | | `number` | Une chaîne de chiffres ou de nombres sous forme décimale ou en notation scientifique. | | `phonenumber` | Une chaîne de texte brut affichée comme un numéro de téléphone formaté. | | `radio` | Une entrée qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. Lorsque vous l'utilisez dans un formulaire, elle sera affichée comme un ensemble de cases d'option. | | `select` | Une entrée déroulante qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. | | `text` | Une chaîne de texte brut, affichée dans une entrée de texte sur une seule ligne. | | `textarea` | Une chaîne de texte brut, affichée dans une entrée de texte sur plusieurs lignes. | ## Créer une propriété Pour créer une propriété, effectuez une requête `POST` à `/crm/v3/properties/{objectType}`. Dans le corps de votre requête, incluez les champs obligatoires suivants : * `groupName` : le [groupe de propriétés](https://knowledge.hubspot.com/fr/properties/organize-and-export-properties) dans lequel la propriété se trouvera. * `name` : le nom interne de la propriété (par exemple : favorite\_food). * `label` : le nom de la propriété tel qu'il apparaît dans HubSpot (par exemple : plat préféré). * `type` : le [type](#property-type-and-fieldtype-values) de propriété. * `fieldType` : le [type de champ](#property-type-and-fieldtype-values) de la propriété. Par exemple, pour créer une propriété de contact appelée *Plat préféré*, votre requête ressemblera à ceci : **JSON** ```json theme={null} { "groupName": "contactinformation", "name": "favorite_food", "label": "Favorite Food", "type": "string", "fieldType": "text" } ``` ## Créer des propriétés d'identifiant unique Lorsqu'une fiche d'informations est créée dans HubSpot, un ID unique (`hs_object_id`) est généré automatiquement et doit être considéré comme une chaîne. Ces ID sont uniques pour chaque type d'objet seulement. Un contact et une entreprise peuvent donc avoir le même ID. Pour les contacts et les entreprises, il existe des identifiants uniques supplémentaires, y compris l'adresse e-mail d'un contact (`email`) et le nom de domaine d'une entreprise (`domain`). Dans certains cas, vous pouvez créer votre propre propriété d'identifiant unique afin qu'il ne soit pas possible de saisir la même valeur pour plusieurs fiches d'informations. Vous pouvez avoir jusqu'à dix propriétés d'ID unique par objet. Pour créer une propriété nécessitant des valeurs uniques via l'API : * Effectuez une requête `POST` à `/crm/v3/properties/{objectType}`. * Dans le corps de votre requête, pour le champ `hasUniqueValue`, définissez la valeur sur `true`. **JSON** ```json theme={null} { "groupName": "dealinformation", "name": "system_a_unique", "label": "Unique ID for System A", "hasUniqueValue": true, "type": "string", "fieldType": "text" } ``` Une fois votre propriété d'ID unique créée, vous pouvez l'utiliser dans un appel d'API pour récupérer des fiches d'informations spécifiques. Par exemple, pour récupérer une transaction avec la valeur `abc` pour la propriété `system_a_unique`, l'URL votre demande serait : `/crm/v3/objects/deals/abc?idProperty=system_a_unique`. Vous pouvez ensuite utiliser cette valeur de propriété d'identifiant unique pour identifier et mettre à jour des fiches d'informations spécifiques de la même manière que vous pouvez utiliser `hs_object_id`, `email` (contacts) ou `domain` (entreprises). ## Créer des propriétés calculées Les propriétés calculées définissent une valeur de propriété en fonction d'autres propriétés dans la même fiche d'informations d'objet. Elles sont définies à l'aide d'une formule, qui peut inclure des opérations telles que le minimum, le maximum, le compte, la somme ou la moyenne. Vous pouvez utiliser l'API de propriétés pour lire ou créer des propriétés calculées dans votre compte HubSpot, en utilisant un type de champ `calculation_equation` et un type `number`, `bool`, `string` ou `enumeration`. Vous pouvez définir la formule de calcul de la propriété avec le champ `calculationFormula`. > [!WARNING] > > ### Remarque : > > Les propriétés calculées créées via l'API ne peuvent pas être modifiées dans HubSpot. Vous pouvez modifier ces propriétés uniquement via l'API des propriétés. ### Syntaxe des propriétés calculées À l'aide de `calculationFormula`, vous pouvez écrire votre formule avec des opérateurs arithmétiques, des opérateurs de comparaison, des opérateurs logiques, des instructions conditionnelles et d'autres fonctions. #### Syntaxe littérale * **Chaîne littérale** : les chaînes constantes peuvent être représentées avec des guillemets simples (`'constant'`) ou des guillemets doubles (`"constant"`). * **Nombre littéral** : les nombres constants peuvent être n'importe quel nombre réel et peuvent inclure une notation ponctuelle. `1005` et `1.5589` sont tous deux des nombres constants valides. * **Booléen littéral** : les booléens constants peuvent être `true` ou `false`. #### Syntaxe de propriété * **Variables de propriétés de chaîne :** pour qu'une chaîne d'identificateurs soit interprétée comme une propriété de chaîne, elle doit être encadrée dans la fonction `string`. Par exemple, `string(var1)` sera interprété comme la valeur de la propriété de chaîne var1. * **Variables de propriétés numériques** : tous les identifiants seront interprétés comme des variables de propriétés numériques. Par exemple, `var1` sera interprété comme la valeur de la propriété numérique var1. * **Variables de propriétés booléennes** : pour qu'un identifiant soit interprété comme une propriété booléenne, il doit être encadré dans la fonction `bool`. Par exemple, l'identifiant `bool(var1)` sera interprété comme la valeur de la propriété booléenne var1. > [!WARNING] > > ### Remarque : > > Remarque : le texte utilisé est sensible à la casse pour tous les types, à l'exception des chaînes. Par exemple, `If A ThEn B` est exactement identique à `if a then b`, mais `'a'` est différent de `'A'`. Les espaces, les onglets et les nouvelles lignes seront utilisés pour la tokenisation, mais seront ignorés. #### Opérateurs Les opérateurs peuvent être utilisés avec des valeurs littérales et de propriété. Pour les opérateurs arithmétiques, vous pouvez utiliser la notation de préfixe pour multiplier et la parenthèse peut être utilisée pour spécifier l'ordre des opérations. | Opérateur | Description | Exemples | | - | - | - | | `+` | Ajoutez des nombres ou des chaînes de caractères. | `property1 + 100` | | `-` | Soustrayez des nombres. | `property1 + 100 - property2` | | `*` | Multipliez des nombres. | `10property1` = `10 * property1` | | `/` | Divisez des nombres. | `property1 * (100 - property2/(50 - property3))` | | `<` | Vérifiez si une valeur est inférieure à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `a < 100` | | `>` | Vérifiez si une valeur est supérieure à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `a > 50` | | `<=` | Vérifiez si une valeur est inférieure ou égale à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `a <= b` | | `>=` | Vérifiez si une valeur est supérieure ou égale à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `b>= c` | | `=` | Vérifiez si une valeur est égale à une autre. Pris en charge à la fois par des chiffres et des chaînes. | `(a + b - 100c * 150.652) = 150-230b` | | `equals` | Vérifiez si une valeur est égale à une autre. Pris en charge à la fois par des chiffres et des chaînes. | `a + b - 100.2c * 150 equals 150 - 230` | | `!=` | Vérifiez si une valeur est différente d'une autre. Pris en charge à la fois par des chiffres et des chaînes. | `string(property1) != 'test_string'` | | `or` | Vérifiez si l'une des deux valeurs est exacte. | `a > b or b <= c` | | `and` | Vérifiez si les deux valeurs sont vraies. | `bool(a) and bool(c)` | | `not` | Vérifiez si aucune des valeurs n'est vraie. | `not (bool(a) and bool(c))` | #### Fonctions Les fonctions suivantes sont prises en charge : | Fonction | Description | Exemples | | - | - | - | | `max` | Aura entre 2 et 100 nombres d'entrées, et renverra le nombre maximum de toutes les entrées. | `max(a, b, c, 100)` ou `max(a, b)` | | `min` | Aura entre 2 et 100 nombres d'entrées, et renverra le nombre minimum de toutes les entrées. | `min(a, b, c, 100)` ou `min(a, b)` | | `is_present` | Détermine si une expression peut être évaluée. | `is_present(bool(a))`= true si la propriété est booléenne, mais `is_present(bool(a))` = false si la propriété est vide ou non booléenne. | | `contains` | A deux chaînes comme entrées et renverra true si la première entrée contient la seconde. | `contains('hello', 'ello')` = `true` tandis que `contains('ello', 'hello')` = false. | | `concatenate` | Rejoint une liste de chaînes. La liste des entrées peut aller de 2 à 100. | `concatenate('a', 'b', string(a), string(b))` | Il existe également deux fonctions d'analyse : * `number_to_string` : tente de convertir l'expression numérique d'entrée en chaîne. * `string_to_number` : tente de convertir l'expression de chaîne d'entrée en nombre. Par exemple, `"Number of cars: " + num_cars` n'est pas une propriété valide car vous ne pouvez pas ajouter une chaîne avec un nombre, mais `"Number of cars: " + number_to_string(num_cars)` est valide. #### Fonctions conditionnelles Vous pouvez également saisir votre formule avec des fonctions conditionnelles en utilisant `if`, `elseif`, `endif` et `else`. Par exemple, une fonction conditionnelle pourrait ressembler à : `if boolean_expression then statement [elseif expression then statement]* [else statement | endif]` où les crochets `[a]` indiquent que a est facultatif, `a|b` indique que a ou b fonctionnera, et `*` signifie 0 ou plus. `endif` peut être utilisé pour terminer une fonction conditionnelle prématurément, en veillant à ce que l'analyseur puisse identifier à quel élément `if` le prochain élément `elseif` appartient. ### Exemples de formules Voici des exemples que vous pouvez utiliser pour vous aider à définir vos propres formules de calcul : ```json theme={null} "calculationFormula": "closed - started" ``` Un exemple plus avancé avec des conditions : ```json theme={null} "calculationFormula": "if is_present(hs_latest_sequence_enrolled_date) then if is_present(hs_sequences_actively_enrolled_count) an hs_sequences_actively_enrolled_count >= 1 then true else false else ''" ``` ## Récupérer des propriétés Vous pouvez récupérer des informations pour des propriétés individuelles ou toutes les propriétés d'un objet. * Pour récupérer une propriété individuelle, effectuez une requête `GET` à `crm/v3/properties/{object}/{propertyName}`. Par exemple, pour récupérer la propriété `favorite_food`, l'URL de votre requête sera `/crm/v3/properties/contacts/favorite_food`. * Pour récupérer toutes les propriétés d'un objet, effectuez une requête `GET` à `/crm/v3/properties/{objectType}`. > [!WARNING] > > ### Remarque : > > Lors de l'extraction de toutes les propriétés, seules les propriétés non sensibles sont renvoyées par défaut. Pour récupérer des propriétés de données sensibles, incluez le paramètre de requête `dataSensitivity` avec la valeur `sensitive`. Pour en savoir plus sur [la gestion des données sensibles par API](https://developers.hubspot.fr/docs/reference/api/crm/sensitive-data#manage-sensitive-data) (BETA, *Entreprise* uniquement). ## Mettre à jour ou effacer les valeurs d'une propriété Pour mettre à jour une valeur de propriété pour une fiche d'informations, effectuez une requête `PATCH` à `crm/v3/objects/{objectType}/{recordId}`. Dans le corps de votre requête, incluez les propriétés et leurs valeurs dans un tableau. En savoir plus sur la mise à jour des fiches d'informations via les [API objet](/docs/guides/crm/understanding-the-crm). ### Ajouter des valeurs aux propriétés date et datetime Les valeurs de temps seront représentées au format ISO 8601 dans les réponses, mais les API HubSpot accepteront l'un ou l'autre des deux formats pour les valeurs de date et d'heure : * **Chaîne formatée conformément à la norme ISO 8601** : selon le type de données, il s'agira de l'un de ces deux formats différents : * Pour les valeurs qui indiquent une date spécifique, le format de date complet sera utilisé : AAAA-MM-JJ (par exemple, `2020-02-29`) * Pour les valeurs qui indiquent une date et une heure spécifiques, les données complètes ainsi que les heures, les minutes, les secondes et une fraction décimale de seconde seront utilisées : AAAA-MM-JJThh:mm:ss.sTZD (par exemple, `2020-02-29T03:30:17.000Z`). Toutes les heures sont définies selon le fuseau horaire UTC afin que les valeurs utilisent toujours le désignateur UTC "Z". * **Horodatage UNIX en millisecondes** : valeurs d'horodatage en millisecondes, qui sont représentées en temps UTC. Par exemple, la valeur de l'horodatage `1427997766000` se traduit par *2 avr 2015 18:02:46 UTC* ou *2 avril 2015, 2:02:46 PM EDT* (heure avancée de l'Est). Il existe deux types de propriétés pour stocker les dates (`date` et `datetime`), qui affectent également la façon dont vous formatez les valeurs : * `date` Les propriétés stockent la date, mais pas l'heure. Les propriétés `date` affichent la date à laquelle elles sont définies, quelle que soit la définition du fuseau horaire du compte ou de l'utilisateur. Pour les valeurs de propriété `date`, il est recommandé d'utiliser le format de date complète ISO 8601. Si vous utilisez le format d'horodatage UNIX, vous devez utiliser un horodatage EPOCH en millisecondes (autrement dit, la valeur doit être définie sur minuit UTC pour la date). Par exemple, pour représenter le 1er mai 2015 dans l'un ou l'autre format : * **IOS 8601** : 2015-05-01 * **Horodatage UNIX en millisecondes** : 1430438400000 * Les propriétés `datetime` stockent à la fois la date et l'heure. L'un ou l'autre format d'horodatage sera accepté. Dans HubSpot, les propriétés `datetime` sont affichées en fonction du fuseau horaire de l'utilisateur. Ainsi, la valeur sera convertie selon le fuseau horaire local de l'utilisateur. ### Ajouter des valeurs à des propriétés de case à cocher Lors de la mise à jour des valeurs pour les propriétés de case à cocher d'une fiche d'informations, formatez les valeurs selon les modalités suivantes : * **Propriété de case à cocher** **booléenne** : pour afficher comme *Oui* ou cochée dans HubSpot, votre valeur doit être `true`. Pour afficher comme *Non* ou non coché dans HubSpot, votre valeur doit être `false`. * **Propriété de case à cocher** à **sélection multiple** : pour ajouter ou joindre des valeurs à une propriété à plusieurs cases à cocher, ajoutez un point-virgule avant la première valeur et séparez les valeurs avec des points-virgules sans espace au milieu. Si la propriété possède une valeur existante, le point-virgule principal ajoutera les valeurs au lieu de les remplacer. Par exemple, un contact a la valeur existante `DECISION_MAKER` pour la propriété `hs_buying_role`. Pour ajouter des valeurs supplémentaires sans remplacer la valeur existante, votre requête ressemblera à ceci : **JSON** ```json theme={null} { "properties": { "hs_buying_role": ";BUDGET_HOLDER;END_USER" } } ``` ### Attribuer des propriétaires de fiche d'informations à des propriétés d'utilisateur Lorsque vous attribuez des utilisateurs à des fiches d'informations de CRM via l'API, votre valeur doit être l'élément `id` du propriétaire de l'utilisateur, que vous pouvez trouver dans les [paramètres de votre propriété](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties) ou via l'[API des propriétaires](/docs/api-reference/crm-crm-owners-v3/guide). Par exemple, pour affecter un utilisateur en tant que propriétaire d'un contact, effectuez une requête `PATCH` à `crm/v3/objects/contacts/{contactId}`, avec le corps `{ "properties":{ "hubspot_owner_id": "41629779"}}`. ### Effacer une valeur de propriété Vous pouvez effacer la valeur d'une propriété d'objet via l'API en définissant la valeur de la propriété sur une chaîne de caractères vide. Par exemple, pour effacer le `firstname` d'un objet de contact, envoyez une requête `PATCH` à `/crm/v3/objects/contacts/{contactId}` avec le corps `{ "properties": { "firstname": ""}}`. # Create a property group Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/property-groups/create-property specs/2026-09/crm-properties-v2026-09.json POST /crm/properties/2026-09/{objectType}/groups Créer et renvoyer une copie d'un nouveau groupe de propriétés. > **Supported products** > **Required Scopes** # Archive a property group Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/property-groups/delete-property specs/2026-09/crm-properties-v2026-09.json DELETE /crm/properties/2026-09/{objectType}/groups/{groupName} Déplacer un groupe de propriétés identifié par {groupName} vers la corbeille. > **Supported products** > **Required Scopes** # Read all property groups Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/property-groups/get-properties specs/2026-09/crm-properties-v2026-09.json GET /crm/properties/2026-09/{objectType}/groups Lire tous les groupes de propriétés existants pour le type d'objet et le compte HubSpot spécifiés. > **Supported products** > **Required Scopes** # Read a property group Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/property-groups/get-property specs/2026-09/crm-properties-v2026-09.json GET /crm/properties/2026-09/{objectType}/groups/{groupName} Lire un groupe de propriétés identifié par {groupName}. > **Supported products** > **Required Scopes** # Update a property group Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/property-groups/update-property specs/2026-09/crm-properties-v2026-09.json PATCH /crm/properties/2026-09/{objectType}/groups/{groupName} Effectuez une mise à jour partielle d'un groupe de propriétés identifié par {groupName}. Les champs fournis seront écrasés. > **Supported products** > **Required Scopes** # Access and manage Sensitive Data Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/sensitive-data # Update a property Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/properties/update-property specs/2026-09/crm-properties-v2026-09.json PATCH /crm/properties/2026-09/{objectType}/{propertyName} Effectuez une mise à jour partielle d'une propriété identifiée par { propertyName }. Les champs fournis seront écrasés. > **Supported products** > **Required Scopes** # Read validation rules for a property Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/property-validations/get-property-validation specs/2026-09/crm-property-validations-v2026-09.json GET /crm/property-validations/2026-09/{objectTypeId}/{propertyName} Lisez les règles de validation d'une propriété identifiée par {propertyName}. > **Supported products** > **Required Scopes** # Read all property validation rules for an object Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/property-validations/get-property-validations specs/2026-09/crm-property-validations-v2026-09.json GET /crm/property-validations/2026-09/{objectTypeId} Lisez toutes les propriétés avec des règles de validation pour un objet donné. > **Supported products** > **Required Scopes** # Retrieve a validation rule for a specific property and rule type, providing details on how property values should be formatted. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/property-validations/get-property-validations-ruleType specs/2026-09/crm-property-validations-v2026-09.json GET /crm/property-validations/2026-09/{objectTypeId}/{propertyName}/rule-type/{ruleType} Récupérez une règle de validation spécifique pour une propriété identifiée par son nom et son type de règle. > **Supported products** > **Required Scopes** # Property Validations API Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/property-validations/guide # Update a validation rule for a specific property and rule type, allowing customization of property value constraints. Source: https://developers.hubspot.fr/docs/api-reference/latest/crm/property-validations/update-property-validation specs/2026-09/crm-property-validations-v2026-09.json PUT /crm/property-validations/2026-09/{objectTypeId}/{propertyName}/rule-type/{ruleType} Mettez à jour une règle de validation spécifique pour une propriété identifiée par son nom et son type de règle. > **Supported products** > **Required Scopes** # Create data source Source: https://developers.hubspot.fr/docs/api-reference/latest/data-studio/datasource-ingestion/create-datasource specs/2026-09/data-studio-datasource-ingestion-v2026-09.json POST /data-studio/data-source/2026-09 Charge un fichier (csv, tsv, json ou xlsx) avec un schéma de colonnes pour créer une nouvelle source de données. Utilise multipart/form-data avec une partie JSON de la requête (contenant datasourceName, datasourceType : FILE et config.file avec les définitions de colonnes) et une partie binaire du fichier. > **Supported products** > **Required Scopes** # Delete data source Source: https://developers.hubspot.fr/docs/api-reference/latest/data-studio/datasource-ingestion/delete-datasource specs/2026-09/data-studio-datasource-ingestion-v2026-09.json DELETE /data-studio/data-source/2026-09/{datasourceId} Supprimer une source de données dans HubSpot Data Studio. Cette opération permet de supprimer une source de données spécifique identifiée par son ID. Assurez-vous que la source de données n'est plus nécessaire avant de la supprimer, car cette action est irréversible. > **Supported products** > **Required Scopes** # Retrieve data source Source: https://developers.hubspot.fr/docs/api-reference/latest/data-studio/datasource-ingestion/get-datasource specs/2026-09/data-studio-datasource-ingestion-v2026-09.json GET /data-studio/data-source/2026-09/{datasourceId} Récupérer des informations détaillées sur une source de données spécifique dans HubSpot Data Studio. Ce point de terminaison fournit des détails tels que le nom, le type et la date de création de la source de données, ainsi que le statut de la dernière ingestion de données. Il est utile pour les développeurs qui ont besoin d'accéder aux sources de données et de les gérer grâce à la programmation. > **Supported products** > **Required Scopes** # Data source ingestion API Source: https://developers.hubspot.fr/docs/api-reference/latest/data-studio/datasource-ingestion/guide # Update data source Source: https://developers.hubspot.fr/docs/api-reference/latest/data-studio/datasource-ingestion/update-datasource specs/2026-09/data-studio-datasource-ingestion-v2026-09.json PUT /data-studio/data-source/2026-09/{datasourceId} Mettre à jour une source de données existante dans HubSpot Data Studio. Ce point de terminaison vous permet de modifier les détails d'une source de données spécifique identifiée par son ID de datasource. La requête doit inclure un corps de formulaire multipart avec les champs nécessaires pour mettre à jour la source de données > **Supported products** > **Required Scopes** # Create an event definition Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/create-event-definition specs/2026-09/events-manage-event-definitions-v2026-09.json POST /events/2026-09/event-definitions Créer une nouvelle définition d'événement comportemental dans votre compte HubSpot. Ce point de terminaison vous permet de définir la structure et les propriétés d'un nouvel événement comportemental, qui peut ensuite être utilisé pour suivre des actions ou des comportements d'utilisateur spécifiques. Le corps de la requête doit inclure les détails de l'événement et les définitions de propriétés nécessaires. > **Supported products** > **Required Scopes** # Définir des événements personnalisés Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/guide Découvrez-en davantage sur la création d'événements personnalisés à l'aide de l'API de HubSpot. > **Exigences de portée** Les événements personnalisés vous permettent de définir et de suivre des événements propres à votre entreprise, tels que des événements sur votre site ou dans une application. Vous pouvez configurer des événements pour stocker des informations au sein des propriétés, que vous pouvez ensuite utiliser dans l'ensemble des outils de HubSpot. Pour envoyer des données d'[événement personnalisé](/docs/api-reference/events-send-event-completions-v3/guide) à HubSpot, vous devez d'abord configurer l'événement. Ceci est similaire aux objets CRM personnalisés, pour lesquels vous devez d'abord définir l'objet personnalisé avant de pouvoir créer des fiches d'informations individuelles pour cet objet. La définition d'un événement comprend des détails tels que ses métadonnées, ses associations d'objets CRM et ses propriétés. Vous trouverez ci-dessous des informations sur la création et la gestion de définitions d'événements à l'aide de l'API. Pour découvrir comment créer des définitions d'événements sans utiliser l'API, consultez [la base de connaissances de HubSpot](https://knowledge.hubspot.com/fr/reports/create-custom-events). ## Créer une définition d'événement Pour créer le schéma d'événement personnalisé, effectuez une requête `POST` à `events/v3/event-definitions`. Dans le corps de la requête, incluez les définitions de votre schéma d'événement, y compris son libellé, son nom, ses associations d'objets CRM et ses propriétés personnalisées. Le corps de la requête ci-dessous fournit un exemple basique de définition d'événement : ```json theme={null} { "label": "My event label", "name": "unique_event_name", "description": "An event description that helps users understand what the event tracks.", "primaryObject": "COMPANY", "propertyDefinitions": [ { "name": "choice-property", "label": "Choice property", "type": "enumeration", "options": [ { "label": "Option 1", "value": "1" }, { "label": "Option 2", "value": "2" } ] }, { "name": "string-property", "label": "String property", "type": "string" } ], "includeDefaultProperties": true } ``` Si vous souhaitez lier automatiquement les finalisations d'événements aux fiches d'informations d'un type d'objet CRM spécifique, vous pouvez inclure un `customMatchingId` dans votre requête `POST`. Dans ce champ, définissez un objet `primaryObjectRule` avec deux champs : la propriété d'objet unique que vous avez préalablement configurée comme `targetObjectPropertyName`, et l'une des propriétés que vous avez définies dans les `propertyDefinitions` de votre définition d'événement. Par exemple, le corps de la requête suivante spécifie une `customMatchingId` qui correspond à un nom de propriété d'objet CRM de `"unique_object_property"` et à un nom de propriété d'événement de `"string_property"` : ```json theme={null} { "label": "My event label", "name": "unique_event_name", "description": "An event description that helps users understand what the event tracks.", "primaryObject": "COMPANY", "propertyDefinitions": [ { "name": "string-property", "label": "String property", "type": "string" } ], "customMatchingId": { "primaryObjectRule": { "targetObjectPropertyName": "unique_object_property", "eventPropertyName": "event_property" } } } ``` Une liste complète des paramètres disponibles pour le corps de la requête est détaillée dans le tableau ci-dessous : | Paramètre | Type | Description | | - | - | - | | `label` | Chaîne | Le libellé compréhensible de l'événement, qui s'affichera dans HubSpot (jusqu'à 100 caractères). Les longs libellés peuvent être coupés dans certaines parties de l'interface utilisateur de HubSpot. | | `name` | Chaîne | Le nom interne unique de l'événement, que vous utiliserez pour référencer l'événement via l'API. Si aucune valeur n'est fournie, HubSpot en générera automatiquement une basée sur le libellé.
          • Cette propriété ne peut pas être modifiée après la création de la définition d'événement.
          • Cette propriété ne peut contenir que des lettres minuscules, des chiffres, des tirets bas et des traits d'union (jusqu'à 50 caractères).
          • Le premier caractère doit être une lettre.
          | | `description` | Chaîne | La description de l'événement, qui s'affichera dans HubSpot. | | `primaryObject` | Chaîne | Le type d'objet CRM auquel les données d'événement seront associées. Les événements terminés apparaîtront sur les enregistrements CRM de ce type d'objet. Peut être l'un des suivants : `"CONTACT"` (par défaut), `"COMPANY"`, `"DEAL"`, `"TICKET"`, `""`. Ce type d'objet ne peut pas être modifié après la création de la définition de l'événement. | | `propertyDefinitions` | Tableau | En plus des [propriétés d'événement par défaut de HubSpot](#hubspot-s-default-event-properties), vous pouvez inclure ce tableau pour définir événement personnalisé propriétés (jusqu'à 50). Pour chaque objet de propriété, incluez les champs suivants :
          • `name` : le nom interne de la propriété, que vous utiliserez lors de l'envoi de données d'événement via l'API.
          • `label` : le libellé dans l'application de la propriété.
          • `type` : le [type de la propriété](#event-properties). La valeur par défaut est `string`.
          • `options` : pour les propriétés de type `enumeration`, ce tableau définit les valeurs disponibles. Doit inclure à la fois un `label` et une `value` pour chaque option.
          • `description` : texte décrivant la propriété.
          | | `customMatchingId` | Objet | Au lieu d'inclure le `objectId` de l'objet cible dans les données de finalisation d'événement, ce champ facultatif définit une règle pour lier automatiquement les achèvements d'événement aux fiches d'informations du type d'objet CRM spécifié. Pour ce faire, faites correspondre la valeur d'une propriété dans les données d'événement avec la valeur d'une propriété unique sur l'objet cible. Cet objet doit inclure un objet `primaryObjectRule` imbriqué, qui à son tour doit inclure deux champs :
          • `targetObjectPropertyName` : une chaîne qui spécifie le nom de la propriété unique sur l'objet CRM cible à utiliser pour la correspondance.
          • `eventPropertyName` : une chaîne qui spécifie le nom de la propriété dans les données de l'événement personnalisé à utiliser pour la correspondance.
          | | `includeDefaultProperties` | Booléen | Champ facultatif qui indique si l'événement doit inclure l'ensemble des [propriétés d'événement par défaut](#hubspot-s-default-event-properties). Si aucune valeur n'est fournie, ce champ sera automatiquement défini sur `true`. | ## Propriétés d'événement Les propriétés des événements personnalisés sont utilisées pour stocker des informations sur l'achèvement de chaque événement personnalisé. Ces propriétés doivent être utilisées le cas échéant pour l'envoi d'achèvements d'événements, mais elles ne sont pas nécessaires pour qu'un achèvement d'événement soit valide. Pour chaque définition d'événement, HubSpot fournit un ensemble de 32 propriétés par défaut. En outre, vous pouvez créer jusqu'à 50 propriétés personnalisées par définition d'événement. Les propriétés peuvent être des types suivants : * `bool` : une propriété qui reçoit une valeur booléenne. Les valeurs doivent être représentées par `true` ou `false`. * `date` : une propriété qui reçoit une date représentant un jour, un mois et une année spécifiques. Les valeurs doivent être représentées au format UTC et peuvent être formatées sous forme de [chaînes ISO 8601](/docs/api-reference/crm-properties-v3/guide#add-values-to-date-and-datetime-properties) ou d'horodatages EPOCH en millisecondes (c.-à-d. minuit UTC). * `datetime` : une propriété avec des valeurs epoch (en millisecondes) ou ISO8601 représentant un horodatage. * `enumeration` : une propriété avec des options prédéfinies. Lors de la création de ce type de propriété, incluez un tableau `options` pour définir les valeurs disponibles. * `number` : une propriété qui reçoit des valeurs numériques avec un maximum d'une décimale. * `string` : une propriété qui reçoit des chaînes de texte en clair. Si le nom de la propriété contient les mots `url`, `referrer` ou `link`, la valeur de la propriété peut comporter jusqu'à 1 024 caractères. Autrement, les valeurs des propriétés peuvent comporter jusqu'à 256 caractères. Ci-dessous, vous découvrirez les propriétés des événements par défaut de HubSpot, comment [définir de nouvelles propriétés pour les événements existants](#define-new-properties) et comment [mettre à jour les propriétés des événements personnalisés existants](#update-existing-custom-properties). ### Propriétés d'événement par défaut de HubSpot * `hs_asset_description` * `hs_asset_type` * `hs_browser` * `hs_campaign_id` * `hs_city` * `hs_country` * `hs_device_name` * `hs_device_type` * `hs_element_class` * `hs_element_id` * `hs_element_text` * `hs_language` * `hs_link_href` * `hs_operating_system` * `hs_operating_version` * `hs_page_content_type` * `hs_page_id` * `hs_page_title` * `hs_page_url` * `hs_parent_module_id` * `hs_referrer` * `hs_region` * `hs_screen_height` * `hs_screen_width` * `hs_touchpoint_source` * `hs_tracking_name` * `hs_user_agent` * `hs_utm_campaign` * `hs_utm_content` * `hs_utm_medium` * `hs_utm_source` * `hs_utm_term` ### Définir de nouvelles propriétés Pour définir une nouvelle propriété sur un événement personnalisé existant, effectuez une requête `POST` à `events/v3/event-definitions/{eventName}/property`. Dans le corps de la requête, incluez la définition de votre propriété. ```json theme={null} { "name": "property-name", "label": "Property name", "type": "enumeration", "options": [ { "label": "label", "value": "value" } ] } ``` Lorsque vous donnez un nom à votre propriété, gardez à l'esprit les éléments suivants : * Une fois que vous avez créé une propriété, son nom ne peut plus être modifié. * Le nom ne peut contenir que des lettres minuscules, des chiffres, des tirets bas et des tirets. * Le premier caractère du nom de la propriété doit être une lettre. * Le nom de la propriété et le libellé peuvent comporter chacun jusqu'à 50 caractères. * Si aucun nom de propriété n'est fourni, un nom sera généré automatiquement en utilisant le libellé de la propriété. * Les longs libellés peuvent être coupés dans certaines parties de l'interface utilisateur de HubSpot. ### Mise à jour des propriétés personnalisées existantes Pour mettre à jour une propriété existante sur un événement personnalisé, effectuez une requête `PATCH` à `events/v3/event-definitions/{eventName}/property`. Les seuls champs qui peuvent être mis à jour sur une propriété sont les champs `label`, `description`, et `options` pour les propriétés d'énumération. > [!WARNING] > > ### Remarque : > > Pour modifier le type de propriété, utilisez le point de terminaison `DELETE` pour supprimer la propriété et la recréer avec le bon type. ### Supprimer une propriété Pour supprimer une propriété existante sur un événement personnalisé, effectuez une requête `DELETE` à `events/v3/event-definitions/{eventName}/property/{propertyName}`. Lorsqu'une propriété est supprimée, elle ne pourra plus être utilisée dans le cadre d'événements futurs. Les achèvements antérieurs conservent leurs valeurs de propriété. ## Mise à jour d'un événement Pour mettre à jour un schéma d'événement personnalisé existant, effectuez une requête `PATCH` à `events/v3/event-definitions/{eventName}`. Les seuls champs de définition d'événement qui peuvent être mis à jour sont `label` et `description`. ```json theme={null} { "label": "Event label", "description": "A description of the event" } ``` ## Supprimer un événement Pour supprimer un événement personnalisé, effectuez une requête `DELETE` à `events/v3/event-definitions/{eventName}`. La suppression d'un événement personnalisé entraînera sa suppression de tous les autres outils HubSpot qui le référencent, tels que les workflows et les rapports. > [!WARNING] > > ### Remarque : Lors de la suppression d'un événement : > > 1. Tous les événements correspondant à cette définition d'événement seront supprimés et irrécupérables. > 2. Les éléments `eventName` précédemment supprimés ne peuvent pas être réutilisés. Soyez donc prudent lors de la suppression d'un événement. ## Obtenir des définitions d'événements existants Pour récupérer une seule définition d'événement, effectuez une requête `GET` à `events/v3/event-definitions/{eventName}`. Pour rechercher des définitions d'événements selon des critères spécifiques, effectuez une requête `GET` à `events/v3/event-definitions`. Vous pouvez fournir les paramètres de requête suivants pour affiner votre recherche : * `searchString` : recherche les événements qui contiennent les caractères spécifiés dans le champ `name`. La recherche n'est pas floue, mais il s'agit plutôt d'une recherche naïve de type *contains*. * `after` : une chaîne de caractères hachée fournie dans les réponses paginées pour afficher la page suivante des résultats de la recherche. * `limit` : le nombre maximum de résultats à renvoyer. * `includeProperties` : une valeur booléenne qui spécifie si les propriétés de l'événement doivent être incluses dans les résultats renvoyés. # API d'événements | Analytics d'événement Source: https://developers.hubspot.fr/docs/api-reference/latest/events/guide Le point de terminaison des analytics d'événement vous permet de trouver et de filtrer des événements associés à un objet de CRM de tout type. # Analytics d'événement Utilisez l'API d'analytics d'événement pour rechercher des événements associés à tout type de fiche d'informations de CRM (***Marketing Hub*** *Entreprise*, ***Sales Hub*** *Entreprise*, ***Service Hub*** *Entreprise* ou ***CMS Hub*** *Entreprise* uniquement). Cela inclut des événements standard, tels que les vues de page de site web et les ouvertures d'e-mails, ainsi que les [événements personnalisés](/docs/api-reference/events-send-event-completions-v3/guide). Par exemple, utilisez cette API pour afficher une chronologie des interactions d'un contact avec votre contenu. Vous pouvez ensuite utiliser cette chronologie pour créer un ensemble de données pour des analytics personnalisés ou présenter une chronologie de contact dans une application externe. ## Interroger les finalisations d'événements individuels Cette API renvoie des événements pour une fiche d'informations de CRM à la fois. Vous pouvez sélectionner la fiche d'informations en précisant `objectType` et en incluant le paramètre de demande `objectId` ou `objectProperty`. ### Sélection selon l'ID d'objet Pour spécifier une fiche d'informations selon son identifiant, ajoutez le paramètre `objectId`. Par exemple, pour spécifier une fiche d'informations de contact avec l'ID *2832*, vous pouvez effectuer la demande `GET` suivante : `/events/v3/events/?objectType=contact&objectId=224834` ### Sélection selon une propriété d'objet Pour spécifier une fiche d'informations selon une propriété unique plutôt que par l'ID de contact, ajoutez le paramètre `objectProperty`. Indiquez la propriété en incluant le nom de la propriété et la valeur du format suivant : `objectProperty.{propname}={propvalue}` Par exemple, pour spécifier un contact selon son adresse e-mail, vous pouvez effectuer la demande `GET` suivante : `/events/v3/events/?objectType=contact&objectProperty.email=user12@dev.com` ## Interrogation et filtrage des types d'événement Lors de la demande d'événements associés à un objet de CRM donné, la réponse comprendra tous les types d'événement, y compris les événements comportementaux personnalisés. Pour renvoyer uniquement les événements terminés pour un type d'événement spécifique, vous pouvez inclure un paramètre `eventType`, suivi du nom de l'événement. Pour obtenir une liste de tous les types d'événement disponibles, vous pouvez faire une demande `GET` à `/events/v3/events/event-types`. La réponse renverra tous les types d'événement dans votre compte. Vous pourrez ensuite utiliser l'un de ces noms d'événement comme paramètre de requête dans une demande `GET` vers le point de terminaison `/events/v3/events`. Par exemple : `/events/v3/events/eventType={EVENT_NAME}&objectType=contact&objectId=224834` # Create an event property Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/create-event-property specs/2026-09/events-manage-event-definitions-v2026-09.json POST /events/2026-09/event-definitions/{eventName}/property Créer une nouvelle propriété pour une définition d'événement spécifiée dans votre compte HubSpot. Ce point de terminaison vous permet de définir des propriétés personnalisées associées à un événement particulier, améliorant ainsi le suivi et l'analyse des événements comportementaux. La requête doit inclure un corps JSON avec les détails de propriété nécessaires. > **Supported products** > **Required Scopes** # Delete an event definition Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/delete-event-definition specs/2026-09/events-manage-event-definitions-v2026-09.json DELETE /events/2026-09/event-definitions/{eventName} Supprimer une définition d'événement spécifique dans votre compte HubSpot en utilisant le nom unique de l'événement. Cette opération est utile pour supprimer les définitions d'événements obsolètes ou incorrectes qui ne sont plus nécessaires. > **Supported products** > **Required Scopes** # Delete an event property Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/delete-event-property specs/2026-09/events-manage-event-definitions-v2026-09.json DELETE /events/2026-09/event-definitions/{eventName}/property/{propertyName} Supprimer une propriété spécifique d’une définition d’événement dans votre compte HubSpot. Cette opération est utile lorsque vous devez supprimer des propriétés obsolètes ou incorrectes d’une définition d’événement. Assurez-vous que les noms d’événement et de propriété sont spécifiés avec précision afin d’éviter les suppressions involontaires. > **Supported products** > **Required Scopes** # Get an event definition Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/get-event-definition specs/2026-09/events-manage-event-definitions-v2026-09.json GET /events/2026-09/event-definitions/{eventName} Récupérer la définition d'un événement comportemental spécifique dans votre compte HubSpot en fournissant le nom de l'événement. Ce point de terminaison renvoie des informations détaillées sur le type d'événement, y compris ses propriétés et ses associations. > **Supported products** > **Required Scopes** # Get all event definitions Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/get-event-definitions specs/2026-09/events-manage-event-definitions-v2026-09.json GET /events/2026-09/event-definitions Récupérer une liste de définitions d'événements disponibles dans votre compte HubSpot. Ce point de terminaison vous permet de rechercher et de filtrer les définitions d'événements en fonction de divers critères, tels que les chaînes de recherche et les options de pagination. Il est utile pour gérer et comprendre les différents types d'événements suivis dans votre compte. > **Supported products** > **Required Scopes** # Update an event definition Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/update-event-definition specs/2026-09/events-manage-event-definitions-v2026-09.json PATCH /events/2026-09/event-definitions/{eventName} Mettre à jour la définition d'un événement comportemental spécifique dans votre compte HubSpot. Cette opération vous permet de modifier les propriétés et les modèles associés à l'événement. Le paramètre de chemin eventName identifie l'événement à mettre à jour. > **Supported products** > **Required Scopes** # Update an event property Source: https://developers.hubspot.fr/docs/api-reference/latest/events/define-events/update-event-property specs/2026-09/events-manage-event-definitions-v2026-09.json PATCH /events/2026-09/event-definitions/{eventName}/property/{propertyName} Mettre à jour une propriété spécifique d'une définition d'événement comportemental dans votre compte HubSpot. Cette opération vous permet de modifier les détails d'une propriété existante associée à un événement donné. Utilisez ce point de terminaison pour maintenir vos propriétés d'événement à jour avec les dernières informations. > **Supported products** > **Required Scopes** # Retrieve event types Source: https://developers.hubspot.fr/docs/api-reference/latest/events/retrieve-events/get-event-types specs/2026-09/events-events-v2026-09.json GET /events/event-occurrences/2026-09/event-types Récupérez une liste des noms de types d'événements. Vous pouvez utiliser ces types d'événements pour interroger l'API afin d'obtenir les occurrences d'événements d'un type souhaité. Remarque : la méthode `get_types` n'est prise en charge que dans la version `12.0.0-beta.1` ou ultérieure du SDK Python. > **Supported products** > **Required Scopes** # Retrieve event occurrences Source: https://developers.hubspot.fr/docs/api-reference/latest/events/retrieve-events/get-events specs/2026-09/events-events-v2026-09.json GET /events/event-occurrences/2026-09 Récupérer les occurrences d’événements pour une date spécifiée en septembre 2026. Ce point de terminaison vous permet de filtrer et de trier les événements en fonction de divers critères, tels que le type d’événement, le type d’objet et les dates d’occurrence. Il prend en charge la pagination et peut renvoyer des propriétés spécifiques des événements si demandé. > **Supported products** > **Required Scopes** # Send a batch of event occurrences Source: https://developers.hubspot.fr/docs/api-reference/latest/events/send-event-data/batch-send-occurrences specs/2026-09/events-send-event-completions-v2026-09.json POST /events/2026-09/send/batch Envoyez plusieurs occurrences d'événements à la fois. > **Supported products** > **Required Scopes** # Send custom event occurrences Source: https://developers.hubspot.fr/docs/api-reference/latest/events/send-event-data/guide # Send an event occurrence Source: https://developers.hubspot.fr/docs/api-reference/latest/events/send-event-data/send-event-occurrence specs/2026-09/events-send-event-completions-v2026-09.json POST /events/2026-09/send Envoyez des données pour une occurrence unique d'événement personnalisé. > **Supported products** > **Required Scopes** # Check import status Source: https://developers.hubspot.fr/docs/api-reference/latest/files/files/get-file-status specs/2026-09/files-files-v2026-09.json GET /files/2026-09/files/import-from-url/async/tasks/{taskId}/status Récupérer le statut d’une tâche d’importation de fichier asynchrone à l’aide de l’ID de tâche. Ce point de terminaison fournit des informations sur l’état actuel de la tâche, par exemple si elle est en attente, en cours de traitement, annulée ou terminée. > **Supported products** > **Required Scopes** # Import file from URL Source: https://developers.hubspot.fr/docs/api-reference/latest/files/files/import-from-url specs/2026-09/files-files-v2026-09.json POST /files/2026-09/files/import-from-url/async Importez un fichier de manière asynchrone à partir d'une URL spécifiée dans le gestionnaire de fichiers HubSpot. Ce point de terminaison vous permet de spécifier divers paramètres tels que le niveau d'accès, la stratégie de validation des doublons et l'écrasement ou non des fichiers existants. L'opération est traitée de manière asynchrone, et un localisateur de tâche est renvoyé pour vérifier l'état de l'import. > **Supported products** > **Required Scopes** # Search files Source: https://developers.hubspot.fr/docs/api-reference/latest/files/files/search-files specs/2026-09/files-files-v2026-09.json GET /files/2026-09/files/search Recherchez des fichiers dans le compte HubSpot à l'aide de divers filtres et critères. Ce point de terminaison vous permet de spécifier plusieurs paramètres de requête pour affiner les résultats de recherche en fonction de propriétés telles que la date de création, la taille, le type, et plus encore. Il prend en charge la pagination et le tri pour gérer efficacement de grands ensembles de données. > **Supported products** > **Required Scopes** # Check folder update status Source: https://developers.hubspot.fr/docs/api-reference/latest/files/folders/get-folder-update-status specs/2026-09/files-files-v2026-09.json GET /files/2026-09/folders/update/async/tasks/{taskId}/status > **Supported products** > **Required Scopes** # Search folders Source: https://developers.hubspot.fr/docs/api-reference/latest/files/folders/search-folders specs/2026-09/files-files-v2026-09.json GET /files/2026-09/folders/search Recherchez des dossiers dans le gestionnaire de fichiers HubSpot à l'aide de divers paramètres de requête pour filtrer les résultats. Ce point de terminaison vous permet de récupérer des dossiers en fonction de critères spécifiques tels que la date de création, la date de mise à jour, le nom du dossier et les identifiants des dossiers parents. Il prend en charge la pagination et le tri pour gérer efficacement de grands ensembles de données. > **Supported products** > **Required Scopes** # Update folder properties by folder ID Source: https://developers.hubspot.fr/docs/api-reference/latest/files/folders/update-folder-folderId specs/2026-09/files-files-v2026-09.json PATCH /files/2026-09/folders/{folderId} Mettez à jour les détails d'un dossier spécifique dans le gestionnaire de fichiers en fournissant son identifiant unique. Cette opération vous permet de modifier les attributs du dossier, tels que son nom ou l'ID de son dossier parent. > **Supported products** > **Required Scopes** # API du CMS | Gestionnaire de fichiers Source: https://developers.hubspot.fr/docs/api-reference/latest/files/guide Les points de terminaison des fichiers sont utilisés pour obtenir et gérer des données dans votre gestionnaire de fichiers. > **Exigences de portée** Utilisez l'outil Fichiers de HubSpot pour gérer et stocker des fichiers dans HubSpot. Les fichiers hébergés dans HubSpot peuvent être chargés et utilisés dans HubSpot et dans le contenu externe. Ils peuvent également être joints à des fiches d'informations à l'aide de l'[API des engagements](/docs/api-reference/overview). Si votre entreprise conçoit son site web à l'aide du CMS Hub, vous pouvez utiliser l'API de fichiers pour charger et stocker des éléments dans HubSpot. Ces fichiers peuvent ensuite être proposés et partagés via CMS Hub. Vous pouvez accéder à l'outil Fichiers [depuis HubSpot](https://knowledge.hubspot.com/fr/files/upload-files-to-use-in-your-hubspot-content) ou via l'API de fichiers. Découvrez ci-dessous l'API de fichiers et apprenez à charger et supprimer des fichiers. Pour une liste complète des points de terminaison de l'API de fichiers, consultez la [documentation de référence](/docs/api-reference/files-files-v3/guide). ## Charger un fichier Les fichiers peuvent être chargés à l'aide d'une demande `POST` multipart/form-data à `files/v3/files` avec les champs suivants. Si un ID de dossier spécifique n'est pas requis lors du chargement, il est recommandé de charger des fichiers dans un dossier et non dans le répertoire racine. Les exigences de dossier lors du chargement peuvent changer à l'avenir. | Champ | Description | | - | - | | `file` | Le fichier à charger (obligatoire). | | `options` | Un objet JSON qui contrôle la confidentialité et l'indexabilité du fichier et contient deux champs : `access`, qui est obligatoire, et `ttl`, qui indique une période après laquelle le fichier sera automatiquement supprimé. Si vous utilisez le champ `ttl` :
          • La période minimale qui doit être définie est de 1 jour.
          • La période maximale qui peut être fixée est de 1 an.
          • Après la période définie, le fichier sera définitivement supprimé. Après la suppression, le fichier ne pourra pas être récupéré ou restauré.
          | | `folderId` | L'ID du dossier dans lequel le fichier sera téléchargé. Ce champ ou `folderPath` doit être fourni dans votre demande (mais pas les deux). | | `folderPath` | Le chemin du dossier dans lequel le fichier sera téléchargé. Ce champ ou `folderId` doit être fourni dans votre demande (mais pas les deux). | | `fileName` | Le nom du fichier. Si aucun nom n'est spécifié, un nom sera généré à partir du contenu du fichier. | | `charsetHunch` | Un encodage défini de caractères pour le fichier chargé. Si ce champ n'est pas renseigné, il sera dérivé du fichier. | Par exemple, si vous souhaitez télécharger un fichier avec les critères suivants sur votre compte HubSpot : * **Nom du fichier :** `cat.png` * **Dossier de destination dans le gestionnaire de fichiers HubSpot :** `/library/cat_archive` * **Accessibilité des fichiers dans HubSpot :** accès privé Les en-têtes et le corps de la demande suivants doivent faire partie de votre demande : ```shell theme={null} curl --request POST \ --url 'https://api.hubapi.com/files/v3/files?=' \ --header 'Authorization: Bearer pat-na1-00000000-0000-0000-0000-000000000000' \ --header 'Content-type: multipart/form-data' \ --form file=@/Users/person/Downloads/cat.png \ --form 'options={"access": "PRIVATE"}' \ --form folderPath=/library/cat_archive ``` La réponse résultante inclura les éléments `id` et `parentFolderId` du fichier téléchargé, que vous pouvez utiliser pour récupérer le fichier via une demande GET. ```json theme={null} // 201 Response from successful file upload { "id": "122692044085", "createdAt": "2023-06-28T17:56:45.393Z", "updatedAt": "2023-06-28T17:56:45.393Z", "archived": false, "parentFolderId": "122692510820", "name": "cat", "path": "/library/cat_archive/cat.png", "size": 24574, "height": 219, "width": 225, "encoding": "png", "type": "IMG", "extension": "png", "defaultHostingUrl": "https://12345.fs1.hubspotusercontent-na1.net/hubfs/12345/library/cat_archive/cat.png", "url": "https://12345.fs1.hubspotusercontent-na1.net/hubfs/12345/library/cat_archive/cat.png", "isUsableInContent": true, "access": "PRIVATE" } ``` ## Consulter le statut de téléchargement d'un fichier Si vous importez un fichier à partir d'une URL vers votre gestionnaire de fichiers via une demande `POST` vers `files/v3/files/import-from-url/async`, vous pouvez consulter le statut de téléchargement du fichier. Pour ce faire, effectuez une demande `GET` vers `files/v3/files/import-from-url/async/tasks/{taskId}/status`. Après avoir fait cette demande, vous recevrez l'une des réponses suivantes : * `PENDING` : le fichier est dans la file d'attente pour être téléchargé. Le processus d'import n'a pas encore commencé. * `PROCESSING` : le fichier est en cours de téléchargement. * `CANCELED` : le téléchargement a été annulé et le fichier ne sera pas téléchargé. Pour importer le fichier dans votre compte HubSpot, vous devrez le télécharger à nouveau. * `COMPLETE` : le fichier a correctement été téléchargé vers l'outil Fichiers. Le fichier téléchargé apparaîtra dans votre outil Fichiers. ## Afficher les détails d'un fichier Pour consulter les détails d'un fichier chargé dans l'outil Fichiers, effectuez une demande `GET` à `files/v3/files/{fileId}`. Cela renverra le fichier avec des informations telles que le nom, la hauteur et la largeur, l'encodage ou encore l'URL. Par exemple, pour récupérer les détails d'un fichier : Si un fichier est défini comme privé, l'URL renverra une erreur 404. Pour obtenir une URL visible du fichier, vous pouvez effectuer une demande `GET` à `/files/v3/files/{fileId}/signed-url`. Lors de cette demande, vous pouvez inclure des paramètres `property` pour renvoyer des spécifiques telles que la hauteur et la largeur. ## Supprimer un fichier Pour supprimer un fichier, effectuez une demande `DELETE` à `files/v3/files/{fileId}`. Le fichier sera marqué comme supprimé et son contenu sera inaccessible. Pour supprimer définitivement un fichier, effectuez une demande `DELETE` à `files/v3/files/{fileId}/gdpr-delete`. Le contenu et les métadonnées du fichier seront définitivement supprimés sous 7 jours. Si un fichier n'est pas supprimé conformément au RGPD, son contenu restera sur les serveurs de HubSpot avec un statut privé et personne ne pourra y accéder. Pour assurer la suppression complète du contenu du fichier, utilisez la fonctionnalité de suppression conformément au RGPD. ## Créer un dossier Pour créer un dossier, effectuez une demande `POST` à `files/v3/folders`. Lors de la demande, vous pouvez inclure les champs ci-dessous. | Champ | Obligatoire | Description | | - | - | - | | `name` | Oui |  : le nom du dossier que vous souhaitez créer. | | `parentFolderId` | Non |  : pour créer le dossier dans un dossier existant, incluez ce champ avec l'ID du dossier existant. `parentFolderId` et `parentFolderPath` ne peuvent pas être définis en même temps. | | `parentFolderPath` | Non |  : pour créer le dossier dans un dossier existant, incluez ce champ avec le chemin du dossier existant. `parentFolderId` et `parentFolderPath` ne peuvent pas être définis en même temps. | ```json theme={null} //Example request body of POST request to /files/v3/folders { "name": "myNewFolder", "parentFolderId": 12345 } ``` ## Modifications de la version 3 Si vous utilisez la version précédente de cette API, la version 3 présente les modifications suivantes : * Tous les fichiers chargés via l'API seront visibles dans le tableau de bord des fichiers et le sélecteur de fichiers. Les fichiers cachés ne peuvent pas être créés. Cependant, les fichiers privés et non indexables peuvent toujours être créés. * Les fichiers de listing ne renverront pas de fichiers masqués ou supprimés. Toutefois, un vaste éventail de filtres peut être appliqué. Les fichiers masqués peuvent toujours être consultés selon l'ID, mais nécessitent un nouveau domaine : `files_ui_hidden.read.` * Plusieurs fichiers ne peuvent pas être téléchargés avec une seule demande. * Les actions de mise à jour de dossier, comme le déplacement et le renommage, sont désormais asynchrones. Chaque demande renvoie un jeton qui peut être utilisé pour vérifier le statut de la modification du dossier. * Les points de terminaison qui créent ou remplacent des fichiers nécessitent des niveaux d'accès pour les fichiers. Ces niveaux d'accès sont les suivants : * `PUBLIC_INDEXABLE`\*\* :\*\* le fichier est accessible publiquement par toute personne disposant de l'URL. Les moteurs de recherche peuvent indexer le fichier. * `PUBLIC_NOT_INDEXABLE`\*\* :\*\* le fichier est accessible publiquement par toute personne disposant de l'URL. X-Robots-Tag : l'en-tête non indexable sera envoyé lors de la récupération du fichier et les moteurs de recherche n'indexeront pas le fichier. * **`PRIVATE` :** le fichier n'est pas accessible publiquement. Nécessite une URL signée pour afficher le contenu. Les moteurs de recherche ne peuvent pas indexer le fichier. * Les points de terminaison qui créent des fichiers permettent la détection de doublons dans le cadre des options de chargement du fichier. * `ENTIRE_PORTAL`\*\* :\*\* permet de rechercher un fichier en double dans le compte. * `EXACT_FOLDER`\*\* :\*\* permet de rechercher un fichier en double dans le dossier indiqué. * `NONE`\*\* :\*\* n'exécutez aucune vérification de doublon. * `REJECT`\*\* :\*\* rejetez le chargement si un doublon est trouvé. * `RETURN_EXISTING`\*\* :\*\* si un fichier en double est trouvé, ne chargez aucun nouveau fichier et renvoyez le doublon. * La détection des doublons fonctionne selon `duplicateValidationScope`, qui détermine la recherche d'un doublon. * Elle applique également `duplicateValidationStrategy`, qui précise ce qui se passe si un doublon est trouvé. # Add asset Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/assets/add-asset specs/2026-09/marketing-campaigns-public-api-v2026-09.json PUT /marketing/campaigns/2026-09/{campaignGuid}/assets/{assetType}/{assetId} Associer un actif à une campagne spécifique. Cette opération lie un actif d'un type et d'un ID spécifiés à une campagne identifiée par son campaignGuid unique. Elle est utile pour organiser et gérer les actifs de campagne dans HubSpot. Si un actif vient d'être créé, une erreur 400 peut apparaître dans la réponse lors de la tentative d'ajout du nouvel actif. Il est recommandé d'attendre quelques minutes avant de réessayer. > **Supported products** > **Required Scopes** # Remove asset Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/assets/delete-asset specs/2026-09/marketing-campaigns-public-api-v2026-09.json DELETE /marketing/campaigns/2026-09/{campaignGuid}/assets/{assetType}/{assetId} Dissocier un actif d'une campagne spécifiée. Cette opération supprime le lien entre l'actif et la campagne, détachant ainsi l'actif du contexte de la campagne. > **Supported products** > **Required Scopes** # Retrieve asset types Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/assets/get-assets specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/asset-types Lister tous les types d'actifs de campagne pris en charge. Ce point de terminaison vous permet de récupérer une liste des types d'actifs pouvant être utilisés dans les campagnes, ce qui est utile pour comprendre les options disponibles lors de la création ou de la gestion des actifs de campagne. > **Supported products** > **Required Scopes** # Batch create campaigns Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/batch/create-campaigns specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/batch/create Créer un lot de campagnes marketing avec des propriétés spécifiées. Ce point de terminaison permet la création de plusieurs campagnes en une seule requête. Notez que la propriété « hs_goal » est obsolète et sera ignorée si elle est incluse dans la requête. > **Supported products** > **Required Scopes** # Batch archive campaigns Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/batch/delete-campaigns specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/batch/archive Supprimer un lot de campagnes à l'aide de leurs identifiants. Ce point de terminaison vous permet de supprimer efficacement plusieurs campagnes à la fois, ce qui simplifie le processus de gestion des données de campagne. Il est particulièrement utile pour nettoyer en masse les campagnes obsolètes ou inutiles. > **Supported products** > **Required Scopes** # Batch retrieve campaigns Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/batch/get-campaigns specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/batch/read Récupérez un lot de campagnes en utilisant les paramètres spécifiés. Ce point de terminaison vous permet de filtrer les campagnes par plage de dates et de sélectionner des propriétés spécifiques à inclure dans la réponse. Il est utile pour obtenir des informations détaillées sur plusieurs campagnes à la fois. > **Supported products** > **Required Scopes** # Batch update campaigns Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/batch/update-campaigns specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/batch/update Mettre à jour un lot de campagnes avec les propriétés spécifiées. Ce point de terminaison vous permet de modifier plusieurs campagnes en une seule requête. Remarque : la propriété « hs_goal » est obsolète et sera ignorée si elle est fournie. > **Supported products** > **Required Scopes** # Add budget item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/budget/create-budget-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/{campaignGuid}/budget Ajouter un nouveau poste budgétaire à la campagne spécifiée. Ce point de terminaison vous permet d'associer des allocations financières à une campagne, ce qui facilite un meilleur suivi et une meilleure gestion des budgets de campagne. > **Supported products** > **Required Scopes** # Delete budget item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/budget/delete-budget-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json DELETE /marketing/campaigns/2026-09/{campaignGuid}/budget/{budgetId} Supprimer un poste budgétaire spécifique en utilisant son identifiant de campagne. Cette opération est utile pour supprimer les allocations budgétaires qui ne sont plus nécessaires ou qui ont été ajoutées par erreur. > **Supported products** > **Required Scopes** # Retrieve budget item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/budget/get-budget-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/budget/{budgetId} Récupérer un poste budgétaire spécifique associé à une campagne en utilisant son identifiant budgétaire unique. Ce point de terminaison est utile pour accéder à des informations détaillées sur un poste budgétaire particulier au sein d'une campagne, permettant l'examen et l'analyse des allocations budgétaires. > **Supported products** > **Required Scopes** # Retrieve budget details Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/budget/get-budget-totals specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/budget/totals Récupérer des informations détaillées sur le budget et les dépenses, y compris les totaux, pour une campagne marketing spécifique. Ce point de terminaison fournit des informations sur les aspects financiers d'une campagne, aidant les utilisateurs à gérer et à analyser efficacement les allocations budgétaires et les modèles de dépenses. > **Supported products** > **Required Scopes** # Update budget item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/budget/update-budget-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json PUT /marketing/campaigns/2026-09/{campaignGuid}/budget/{budgetId} Mettre à jour un poste budgétaire spécifique en utilisant son identifiant au sein d'une campagne marketing. Ce point de terminaison vous permet de modifier les détails d'un poste budgétaire associé à une campagne, identifié par son campaignGuid et son budgetId uniques. Utilisez cette fonction pour ajuster les allocations budgétaires ou mettre à jour les informations relatives au budget d'une campagne. > **Supported products** > **Required Scopes** # Clone a campaign Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/clone-campaign specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/clone Clonez une campagne identifiée par sourceCampaignGuid dans le corps de la requête. La campagne clonée aura son propre GUID et les propriétés fournies. Le clonage d'éléments est effectué de manière asynchrone. Utilisez le point de terminaison clone-status pour vérifier la progression. > **Supported products** > **Required Scopes** # Create a campaign Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/create-campaign specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09 Créer une campagne avec les propriétés spécifiées et recevoir une copie de l'objet, y compris son ID. Remarque : la propriété « hs_goal » est obsolète et sera ignorée si elle est fournie. > **Supported products** > **Required Scopes** # Delete a campaign Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/delete-campaign specs/2026-09/marketing-campaigns-public-api-v2026-09.json DELETE /marketing/campaigns/2026-09/{campaignGuid} Supprimer une campagne spécifiée du système. Cette opération supprimera la campagne identifiée par le campaignGuid donné de votre compte HubSpot. > **Supported products** > **Required Scopes** # Retrieve a campaign Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/get-campaign specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid} Récupérer les détails d'une campagne marketing spécifique identifiée par son ID interne. Ce point de terminaison vous permet d'accéder aux informations de la campagne et aux ressources associées. Il est utile pour obtenir des données de campagne à des fins d'analyse ou de reporting. Si les propriétés à retourner ne sont pas définies avec le paramètre de requête « properties », la réponse inclura une carte de propriétés vide. > **Supported products** > **Required Scopes** # Retrieve campaigns Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/get-campaigns specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09 Récupérer une page de campagnes marketing depuis votre compte HubSpot. Ce point de terminaison vous permet de trier, de filtrer et de paginer les campagnes, ce qui est utile pour gérer et analyser vos efforts marketing. > **Supported products** > **Required Scopes** # Retrieve clone status Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/get-clone-status specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/clone/{campaignGuid}/status Vérifiez le statut d'une opération de clonage de campagne asynchrone. Le paramètre de chemin campaignGuid doit être le GUID de la nouvelle campagne renvoyé par le point de terminaison de clonage. > **Supported products** > **Required Scopes** # Campaigns API Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/guide # Retrieve contact IDs Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/reports/get-contact-ids specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/reports/contacts/{contactType} Récupérer la liste des identifiants de contact pour la campagne et le type de contact spécifiés. Ce point de terminaison vous permet de récupérer les informations de contact associées à une campagne particulière, filtrées par le type de contact. Il prend en charge la pagination et le filtrage par date pour gérer efficacement de grands ensembles de données. > **Supported products** > **Required Scopes** # Retrieve metrics Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/reports/get-metrics specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/reports/metrics Récupérez les métriques d'une campagne marketing spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet de recueillir des informations sur les performances de la campagne sur une période donnée. > **Supported products** > **Required Scopes** # Retrieve revenue report Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/reports/get-revenue-report specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/reports/revenue Récupérer les données du rapport d'attribution des revenus pour une campagne spécifique. Ce point de terminaison vous permet de récupérer des métriques détaillées d'attribution des revenus, qui peuvent être filtrées par modèle d'attribution et par plage de dates. Ces données sont utiles pour analyser l'impact financier des campagnes marketing. > **Supported products** > **Required Scopes** # Create spend item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/spend/create-spend-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json POST /marketing/campaigns/2026-09/{campaignGuid}/spend Créer un nouveau poste de dépense de campagne pour une campagne spécifiée. Ce point de terminaison vous permet d'ajouter des détails financiers liés aux dépenses de campagne, ce qui peut aider à suivre et à gérer efficacement les budgets marketing. > **Supported products** > **Required Scopes** # Delete spend item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/spend/delete-spend-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json DELETE /marketing/campaigns/2026-09/{campaignGuid}/spend/{spendId} Supprimez un poste de dépense de campagne spécifique grâce à son identifiant. Cette opération est utile pour gérer et nettoyer les enregistrements de dépenses associés à une campagne marketing particulière. > **Supported products** > **Required Scopes** # Retrieve spend Item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/spend/get-spend-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json GET /marketing/campaigns/2026-09/{campaignGuid}/spend/{spendId} Récupérez un élément de dépense de campagne spécifique grâce à son spendId unique. Ce point de terminaison vous permet d'accéder à des informations détaillées sur un élément de dépense particulier associé à une campagne, ce qui peut être utile pour le suivi et la gestion des dépenses de campagne. > **Supported products** > **Required Scopes** # Update spend item Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/spend/update-spend-item specs/2026-09/marketing-campaigns-public-api-v2026-09.json PUT /marketing/campaigns/2026-09/{campaignGuid}/spend/{spendId} Mettre à jour un élément de dépense de campagne spécifique grâce à son spendId unique. Cette opération vous permet de modifier les détails d'un élément de dépense existant associé à une campagne, tel que son montant ou sa description. > **Supported products** > **Required Scopes** # Update a campaign Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/campaigns/update-campaign specs/2026-09/marketing-campaigns-public-api-v2026-09.json PATCH /marketing/campaigns/2026-09/{campaignGuid} Effectuer une mise à jour partielle d'une campagne identifiée par l'ID spécifié. Les valeurs de propriété fournies seront écrasées. Les propriétés en lecture seule et inexistantes entraîneront une erreur 400. Les valeurs de propriété peuvent être effacées en passant une chaîne vide. Remarque : la propriété « hs_goal » est obsolète et sera ignorée si elle est fournie. > **Supported products** > **Required Scopes** # Calls-to-action JavaScript API Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/ctas-sdk/guide # Global form events Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/forms/global-form-events # Create an email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/create-email specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09 Créez un nouvel e-mail marketing dans votre compte HubSpot en utilisant les paramètres spécifiés. Ce point de terminaison vous permet de définir le contenu, les paramètres et d’autres détails de l’e-mail. Une fois la création réussie, l’URL de la ressource d’e-mail nouvellement créée est renvoyée. > **Supported products** > **Required Scopes** # Create an A/B test variation Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/create-ab-variation specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09/ab-test/create-variation Créez une variante d'un e-mail marketing pour un test A/B. La nouvelle variante sera créée en tant que brouillon. Si une variante active existe déjà, une nouvelle ne sera pas créée. > **Supported products** > **Required Scopes** # Clone a marketing email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/create-clone specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09/clone Un doublon d'e-mail sera créé avec les mêmes propriétés que l'original, à l'exception d'un ID unique. > **Supported products** > **Required Scopes** # Delete a marketing email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/delete-email specs/2026-09/marketing-marketing-emails-v2026-09.json DELETE /marketing/emails/2026-09/{emailId} Supprimer un e-mail marketing par son ID > **Supported products** > **Required Scopes** # Get A/B test variation Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/get-ab-variation specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/{emailId}/ab-test/get-variation Ce point de terminaison vous permet d'obtenir la variante d'un e-mail marketing A/B. Si l'e-mail est la variante A (principal), la variante B (variant) sera affichée et inversement. > **Supported products** > **Required Scopes** # Get the details of a specified marketing email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/get-email specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/{emailId} Obtenez les détails d'un e-mail marketing. > **Supported products** > **Required Scopes** # Get email draft Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/get-email-draft specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/{emailId}/draft Obtenez la version brouillon d'un e-mail (si elle existe). S'il n'existe aucune version brouillon, l'e-mail publié sera affiché. > **Supported products** > **Required Scopes** # Update a marketing email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/emails/update-email specs/2026-09/marketing-marketing-emails-v2026-09.json PATCH /marketing/emails/2026-09/{emailId} Modifiez les propriétés d'un e-mail marketing. > **Supported products** > **Required Scopes** # Retrieve emails Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/get-emails specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09 Récupérez une liste d'e-mails marketing depuis votre compte HubSpot. Ce point de terminaison vous permet de filtrer les e-mails en fonction de divers critères, tels que la date de publication, la date de création, la date de mise à jour, etc. Vous pouvez également contrôler le nombre de résultats par page et inclure des statistiques ou des propriétés supplémentaires dans la réponse. > **Supported products** > **Required Scopes** # Marketing API | Marketing Email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/guide # Get a revision of a marketing email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/revisions/get-revision specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/{emailId}/revisions/{revisionId} Obtenez une révision spécifique d'un e-mail marketing. > **Supported products** > **Required Scopes** # Reset draft Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/revisions/reset-draft specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09/{emailId}/draft/reset Restitue une copie de la version en ligne dans la brouillon. > **Supported products** > **Required Scopes** # Restore to draft Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/revisions/reset-to-draft specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09/{emailId}/revisions/{revisionId}/restore-to-draft Restitue à une version antérieure d'un e-mail marketing le statut de BROUILLON. Tout contenu actuel du brouillon de cet objet sera écrasé. > **Supported products** > **Required Scopes** # Restore from revision Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/revisions/restore-from-revision specs/2026-09/marketing-marketing-emails-v2026-09.json POST /marketing/emails/2026-09/{emailId}/revisions/{revisionId}/restore Rétablit une version antérieure d'un e-mail marketing. La révision actuelle devient ancienne et un nouveau numéro de version est attribué à la version rétablie. > **Supported products** > **Required Scopes** # Update draft Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/revisions/update-draft specs/2026-09/marketing-marketing-emails-v2026-09.json PATCH /marketing/emails/2026-09/{emailId}/draft Créez ou mettez à jour la version brouillon d'un e-mail marketing. S'il n'existe aucun brouillon, le système en crée un à partir de l'e-mail « publié » et applique le corps de la requête au brouillon. La version brouillon n'existe que dans la mémoire tampon — l'e-mail n'est pas cloné. > **Supported products** > **Required Scopes** # Get statistics histogram Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/statistics/get-histogram specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/statistics/histogram Obtenez des statistiques agrégées à des intervalles de temps précisés. Chaque intervalle contient les statistiques agrégées des e-mails envoyés durant cette période. > **Supported products** > **Required Scopes** # Get aggregated statistics Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-emails/statistics/get-statistics specs/2026-09/marketing-marketing-emails-v2026-09.json GET /marketing/emails/2026-09/statistics/list Utilisez ce point de terminaison pour obtenir les statistiques agrégées des e-mails envoyés au cours d'une période précisée. Affiche également la liste des e-mails envoyés au cours de la période. > **Supported products** > **Required Scopes** # Record attendance by contact ID and external event ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/attendance/set-attendance-contactId-externalId specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/create Enregistre la participation de plusieurs contacts HubSpot à un événement marketing en utilisant leurs ID de contact HubSpot. Fonctionnalité supplémentaire : - Ajoute un événement de la chronologie aux contacts. Propriétés autorisées : Pour l'état « participer » : - joinedAt - leftAt > **Supported products** > **Required Scopes** # Record attendance by participant email and external event ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/attendance/set-attendance-email-externalId specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/email-create Enregistre la participation de plusieurs contacts HubSpot à un événement marketing en utilisant leurs adresses e-mail. Si un contact n'existe pas, il sera automatiquement créé. Le champ contactProperties est utilisé exclusivement pour créer de nouveaux contacts et ne mettra pas à jour les propriétés des contacts existants. Fonctionnalité supplémentaire : - Ajoute un événement de la chronologie aux contacts. Propriétés autorisées : Pour l'état « participer » : - joinedAt - leftAt > **Supported products** > **Required Scopes** # Delete events by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/batch/delete-events-externalId specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events/delete Supprime plusieurs événements marketing en fonction de l'ID de compte externe, l'ID d'événement externe et l'ID d'application. Seuls les événements marketing créés par les mêmes applications seront supprimés ; les événements provenant d'autres applications ne peuvent pas être supprimés par ce point de terminaison. > **Supported products** > **Required Scopes** # Delete events by HubSpot ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/batch/delete-marketing-events specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/batch/archive Supprime plusieurs événements marketing du portail en fonction de leur ID d'objet, s'ils existent. Réponses : 204 : Renvoyé si tous les événements marketing spécifiés ont été supprimés avec succès. 207 : Renvoyé si certains ID d'objet ne correspondent à aucun événement marketing existant. > **Supported products** > **Required Scopes** # Update events by HubSpot ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/batch/update-marketing-events specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/batch/update Met à jour plusieurs événements marketing sur le portail en fonction de leur ID d'objet, s'ils existent. > **Supported products** > **Required Scopes** # Create or update events Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/batch/upsert-marketing-events specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events/upsert Insère plusieurs événements marketing. Si un événement marketing avec l'ID spécifié existe déjà, il sera mis à jour ; sinon, un nouvel événement sera créé. Seuls les événements marketing créés à l'origine par la même application peuvent être mis à jour. > **Supported products** > **Required Scopes** # Create an event Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/create-event specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events Crée un nouvel événement marketing dans HubSpot > **Supported products** > **Required Scopes** # Delete event by HubSpot ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/delete-event specs/2026-09/marketing-marketing-events-v2026-09.json DELETE /marketing/marketing-events/2026-09/{objectId} Supprime l'événement marketing existant avec l'ID d'objet spécifié, s'il existe. > **Supported products** > **Required Scopes** # Delete event by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/delete-event-externalId specs/2026-09/marketing-marketing-events-v2026-09.json DELETE /marketing/marketing-events/2026-09/events/{externalEventId} Supprime l'événement marketing existant avec l'ID de compte externe et l'ID d'événement externe spécifiés, s'il existe. Seuls les événements marketing créés par la même application peuvent être supprimés. > **Supported products** > **Required Scopes** # Mark an event as canceled Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/event-status/set-event-canceled specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events/{externalEventId}/cancel Marquer un événement marketing comme annulé. > **Supported products** > **Required Scopes** # Retrieve event by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/get-marketing-event specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/events/{externalEventId} Renvoie les détails d'un événement marketing avec l'ID de compte externe et l'ID d'événement externe spécifiés, s'il existe. Seuls les événements marketing créés par l'application à l'origine de la demande peuvent être récupérés. > **Supported products** > **Required Scopes** # Retrieve event by HubSpot ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/get-marketing-event-objectId specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/{objectId} Renvoie les détails d'un événement marketing avec l'ID d'objet spécifié, s'il existe. > **Supported products** > **Required Scopes** # Retrieve all events Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/get-marketing-events specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09 Récupérer une liste d'événements marketing pour la version d'API spécifiée. Ce point de terminaison prend en charge la pagination pour naviguer à travers de grands ensembles de données. L'utiliser pour accéder aux détails des événements marketing dans un format paginé. > **Supported products** > **Required Scopes** # API marketing | Événements marketing Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/guide Une vue d'ensemble de l'objet Événements marketing dans HubSpot. > **[Run in Postman](https://app.getpostman.com/run-collection/26126890-66991673-f7f9-4430-8c49-ddd3b01141b9)** > **Exigences de portée** # Événements marketing Un événement marketing est un objet de CRM similaire aux contacts et aux entreprises. Celui-ci vous permet de suivre des événements marketing, tels qu'un webinar, ainsi que les contacts qui se sont inscrits et ont assisté à l'événement. Découvrez ci-dessous comment utiliser l'API d'événements marketing pour intégrer des événements marketing dans une application. ## Dans cet article * [Exigences des domaines](#scope-requirements) * [Différences entre les points de terminaison d'ID interne et externe](#differences-between-internal-id-and-external-id-endpoints) * [Points de terminaison de gestion des événements](#create-and-update-events) * [Points de terminaison de participation à l'événement](#event-attendance-endpoints) * [Points de terminaison du statut du participant](#participant-state-endpoints) * [Points de terminaison des associations de listes](#list-association-endpoints) * [Configurer les paramètres d'application](#configure-app-settings) * [Étape 1 : Créer une API dans votre application](#step-1-create-an-api-in-your-app) * [Étape 2 : Fournir à HubSpot le chemin d'URL vers votre API](#step-2-provide-hubspot-with-the-url-path-to-your-api) ## Exigences des domaines Pour effectuer une requête API vers l'un des points de terminaison d'événement marketing, les [champs d'application suivants](/docs/apps/legacy-apps/authentication/working-with-oauth#scopes) sont requis : * `crm.objects.marketing_events.read` : autorise la récupération des données relatives aux événements marketing et à la participation. * `crm.objects.marketing_events.write` : accorde la permission de créer, de supprimer ou d'apporter des modifications aux informations relatives à un événement marketing. Lors de l'authentification des appels effectués par votre application, vous pouvez utiliser un [jeton d'accès d'application privée](/docs/apps/legacy-apps/private-apps/overview) ou [OAuth](/docs/api-reference/auth-oauth-v1/guide). Découvrez-en davantage sur les [méthodes d'authentification](/docs/apps/legacy-apps/authentication/intro-to-auth). Pour obtenir la liste complète des points de terminaison disponibles, consultez la [documentation de référence](/docs/api-reference/marketing-marketing-events-v3/guide). ## Différences entre les points de terminaison d'ID interne et externe De nombreux points de terminaison ci-dessous fournissent deux méthodes différentes pour identifier un événement que vous souhaitez récupérer ou mettre à jour. Bien que le résultat final pour des points de terminaison similaires puisse être le même, ils diffèrent principalement dans les ID associés que vous fournissez : * **Points de terminaison utilisant des ID externes :** les points de terminaison qui nécessitent les paramètres `externalEventId` et `externalAccountId` ne fonctionneront que dans l'application qui a créé l'événement à l'origine. Par exemple, si vous avez créé deux applications publiques, appelées *App A* et *App B*, et que vous avez créé un événement marketing via l'authentification et les ID associés à *App A*, seule *App A* peut lire, mettre à jour ou ajouter de nouveaux participants à l'événement. Si vous tentez d'accéder au même événement avec *App B* en utilisant les mêmes externalEventId et externalAccountId, une erreur 404 se produira. * **Points de terminaison utilisant un objectId :** les points de terminaison qui nécessitent un `objectId` peuvent être utilisés pour accéder à un événement par n'importe quelle application avec les domaines associés répertoriés dans la section ci-dessus, quelle que soit l'application qui a créé l'événement à l'origine. Si *App A* a créé un événement marketing, *App B* peut toujours lire, mettre à jour ou ajouter des participants via des points de terminaison basés sur `objectId`. ## Points de terminaison de gestion des événements Les sections suivantes fournissent des informations contextuelles sur les propriétés d'événements courantes et expliquent comment utiliser les différents points de terminaison de gestion des événements pour créer, lire, mettre à jour et archiver des événements. ### Propriétés d'événement Les propriétés suivantes sont disponibles pour la récupération et la mise à jour lors de l'utilisation des points de terminaison de gestion des événements : | Paramètre | Type | Description | | - | - | - | | `eventName` | Chaîne | Le titre de votre événement. | | `eventType` | Chaîne | Le type de l'événement (par exemple, webinar, salon commercial, etc.). | | `eventOrganizer` | Chaîne | La personne ou l'organisation qui organise l'événement. | | `eventDescription` | Chaîne | Une description de votre événement. | | `eventUrl` | Chaîne | URL vers laquelle les utilisateurs peuvent naviguer pour obtenir plus de détails et/ou s'inscrire à votre événement. | | `eventCancelled` | Booléen | Si l'événement soit annulé ou non. | | `eventStartTime` | Chaîne | Un horodatage au format ISO 8601 de l'heure de fin de l'événement. | | `eventEndTime` | Chaîne | Un horodatage au format ISO 8601 de l'heure de fin de l'événement. | ### Créer un événement Pour créer un événement marketing, vous pouvez faire une requête `POST` à `/marketing/v3/marketing-events/events` et fournir les paramètres `eventName`, `externalEventId`, `externalAccountId` et `eventOrganizer` dans le corps de votre requête. Vous pouvez éventuellement fournir les propriétés supplémentaires répertoriées dans le [tableau ci-dessus](#event-properties) dans votre requête. Par exemple, si la propriété `externalAccountId` de votre application est `"12345"`, et que la propriété `externalEventId` de votre événement dans votre application est `"67890"`, vous pouvez créer un nouvel événement appelé `"Winter webinar"` avec une requête qui ressemblerait à ce qui suit : ```json theme={null} { "externalAccountId": "12345", "externalEventId": "67890", "eventName": "Winter webinar", "eventOrganizer": "Snowman Fellowship", "eventCancelled": false, "eventUrl": "https://example.com/holiday-jam", "eventDescription": "Let's get together to plan for the holidays", "eventCompleted": false, "startDateTime": "2024-08-07T12:36:59.286Z", "endDateTime": "2024-08-07T12:36:59.286Z", "customProperties": [ { "name": "eventSeason", "value": "winter" } ] } ``` ### Mettre à jour les propriétés d'événement à l'aide d'ID externes Vous pouvez mettre à jour des événements marketing en effectuant une requête `POST` au point de terminaison `/marketing/v3/marketing-events/events/upsert`. Vous pouvez inclure n'importe quelle `customProperties` avec d'autres détails de votre événement (y compris son nom, son heure de début et sa description). Si un événement marketing existe déjà avec l'ID spécifié dans votre requête, il sera mis à jour. Sinon, un nouvel événement sera créé. Par exemple, la requête suivante créera un événement avec un ID de `4` nommé « Cours de cuisine virtuel » : ```json theme={null} { "inputs": [ { "customProperties": [ { "name": "property1", "value": "1234" } ], "eventName": "Virtual cooking class", "startDateTime": "2023-11-30T17:46:20.461Z", "eventOrganizer": "Chef Joe", "eventDescription": "Join us for a virtual cooking class! Yum." "eventCancelled": false, "externalAccountId": "CookingCo", "externalEventId": "4" } ] } ``` ### Mettre à jour les propriétés d'un événement à l'aide de son objectId Une fois qu'un événement est créé, vous pouvez mettre à jour ses propriétés en faisant une requête `PATCH` à `/marketing/v3/marketing-events/{objectId}`. * Pour obtenir la propriété `objectId` d'un événement marketing spécifique, suivez les instructions de [cet article de la base de connaissances](https://knowledge.hubspot.com/fr/integrations/use-marketing-events#view-and-analyze-marketing-events) pour afficher les détails d'un événement dans votre compte HubSpot, puis recherchez l'ID dans le champ *ID de fiche d'informations*. La propriété `objectId` sera également renvoyée dans la réponse lors de la création d'un événement. * Vous pouvez également faire une requête `GET` au point de terminaison `/marketing/v3/marketing-events` décrit dans la section suivante. * Si vous avez la propriété `externalEventId` d'un événement, vous pouvez l'inclure comme chemin lorsque vous effectuez une requête `GET` à `/marketing/v3/marketing-events/{externalEventId}/identifiers`. La réponse comprendra tous les événements marketing ainsi que les identifiants pertinents pour chaque événement (c'est-à-dire `objectId`, `appInfo`, `marketingEventName` et `externalAccountId`). ### Obtenir les détails d'évènement Pour obtenir une liste de tous les événements marketing ainsi que leurs propriétés, exécutez une requête `GET` à `/marketing/v3/marketing-events`. Si vous avez besoin de récupérer les détails d'un événement marketing spécifique par son *ID de fiche d'informations* dans HubSpot, vous pouvez fournir l'ID comme objectId dans une requête `GET` à `/marketing/v3/marketing-events/{objectId}`. ```json theme={null} { "eventName": "Test Marketing Event", "eventType": "test-type", "startDateTime": "2024-05-22T12:29:50.734Z", "endDateTime": "2024-05-25T12:29:50.734Z", "eventOrganizer": "testEventOrganizer", "eventDescription": "testDescription", "eventUrl": "testURL", "eventCancelled": true, "eventCompleted": false, "customProperties": [ { "name": "test_custom_prop", "value": "1" }, { "name": "test_prop", "value": "2" } ], "objectId": "58237132332", "externalEventId": null, "eventStatus": "CANCELLED", "appInfo": { "id": "111", "name": "Zoom" }, "registrants": 1, "attendees": 1, "cancellations": 2, "noShows": 0, "createdAt": "2024-08-07T12:58:40.635Z", "updatedAt": "2024-10-15T13:35:03.353Z" } ``` ### Supprimer un événement Pour supprimer un événement marketing, effectuez une requête `DELETE` à `/marketing/v3/marketing-events/{objectId}` avec la propriété `objectId` associée à l'événement. En cas de succès, vous recevrez une réponse `204 No Content`. ### Mettre à jour plusieurs événements en masse Pour mettre à jour plusieurs événements marketing en masse, vous pouvez effectuer une requête `POST` à `/marketing-events/v3/marketing-events/batch/update` et fournir les propriétés que vous souhaitez mettre à jour pour chaque événement dans le tableau inputs du corps de la requête. Par exemple, si vous souhaitez mettre à jour plusieurs propriétés de deux événements marketing avec des ID d'objet de 58237132332 et 54073507364 dans une seule requête, le corps de votre requête ressemblera à ce qui suit : ```json theme={null} { "inputs": [ { "objectId": "58237132332", "eventCancelled": true, "eventOrganizer": "testEventOrganizer", "eventUrl": "testURL", "eventDescription": "testDescription", "eventName": "Test Marketing Event Update", "eventType": "test-type" }, { "objectId": "54073507364", "eventCancelled": true, "eventOrganizer": "testEventOrganizer", "eventUrl": "testURL", "eventDescription": "testDescription", "eventName": "Test Marketing Event Update 2", "eventType": "test-type" } ] } ``` ## Points de terminaison de participation à l'événement Les points de terminaison du statut de participation à l'événement vous permettent de créer une fiche d'informations sur les activités d'inscription d'un contact. Par exemple si le contact s'est inscrit, a assisté ou a annulé son inscription à votre événement. Vous pouvez utiliser ce point de terminaison pour enregistrer l'inscription d'un contact HubSpot à un événement marketing. ### Mettre à jour la participation à l'aide de la propriété objectId de l'événement Si vous voulez utiliser la propriété `objectId` d'un événement marketing, vous pouvez utiliser l'ID du contact pour lequel vous souhaitez enregistrer le statut de participation, ou utiliser son adresse e-mail. * Pour utiliser l'ID d'un contact, effectuez une requête POST à `/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/create` puis fournissez l'ID du contact à l'aide du champ `vid` dans le tableau `inputs` du corps de votre requête. Par exemple, le corps de la requête ci-dessous fournit un exemple de mise à jour des données de participation pour un contact avec l'ID `47733471576`, qui spécifie quand le participant a rejoint et quitté l'événement via les propriétés `joinedAt` et `leftAt` : ```json theme={null} { "inputs": [ { "vid": 47733471576, "properties": { "joinedAt": "2024-05-22T13:38:16.500Z", "leftAt": "2024-05-22T15:40:16.500Z" }, "interactionDateTime": 1716382579000 } ] } ``` * Pour utiliser l'adresse e-mail d'un contact, effectuez une requête POST à `/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/email-create` puis fournissez l'adresse e-mail du contact à l'aide du champ `email` dans le tableau `inputs` du corps de votre requête. * Si vous créez un nouveau contact, vous pouvez inclure le champ `contactProperties` dans le tableau `inputs` du corps de votre requête pour définir les propriétés associées au contact que vous venez de créer. Si le contact existe déjà, le champ `contactProperties` fourni dans la requête ne sera pas mis à jour. * Par exemple, le corps de la requête ci-dessous fournit un exemple de mise à jour des données de participation pour un contact avec une adresse e-mail de `john@example.com`, qui spécifie quand le participant a rejoint et quitté l'événement via les champs `joinedAt` et `leftAt` dans l'objet `properties` de votre tableau `inputs` : ```json theme={null} { "inputs": [ { "contactProperties": { "additionalProp1": "string", "additionalProp2": "string" }, "properties": { "joinedAt": "2024-05-22T13:38:16.500Z", "leftAt": "2024-05-22T15:40:16.500Z" }, "email": "john@example.com", "interactionDateTime": 1716382579000 } ] } ``` Pour les deux approches ci-dessus, fournissez les valeurs suivantes pour les paramètres de chemin correspondants : * `objectId` : l'*ID de fiche d'informations* de l'événement marketing dans votre compte HubSpot. Consultez la [section ci-dessus](#differences-between-internal-id-and-external-id-endpoints) pour plus de détails sur l'utilisation de la propriété objectId d'un événement par rapport à l'utilisation de ses ID externes. * `subscriberState` : une énumération qui correspond au nouveau statut de participation du contact. * `REGISTERED` : indique que le contact HubSpot s'est inscrit à l'événement. * `ATTENDED` : permet d'indiquer que le contact HubSpot a assisté à l'événement. Si vous mettez à jour le statut d'un contact vers ATTENDED, vous pouvez également inclure les horodatages `joinedAt` et `leftAt` comme paramètres dans le corps de la requête, spécifié dans le format ISO8601 Instant. * `CANCELLED` : indique que le contact HubSpot qui s'était préalablement inscrit à l'événement a annulé son inscription. ### Mettre à jour la participation à l'aide des ID externes de l'événement > [!WARNING] > > ### Remarque : > > Si vous utilisiez auparavant les points de terminaison `/upsert` ou `/email-upsert` pour mettre à jour le statut d'un participant, vous pouvez utiliser les points de terminaison alternatifs répertoriés ci-dessous. Toutefois, par rapport aux points de terminaison de participation aux événements ci-dessus, l'utilisation de ces points de terminaison ne prendra pas en charge les éléments suivants : > > * Création d'un nouveau contact s'il n'existe pas déjà > * Affichage des événements de la chronologie sur la page de fiche d'informations d'un contact > * Spécification des propriétés `joinedAt` ou `leftAt` > * Affichage d'une réponse détaillée en cas de succès Si vous utilisez les points de terminaison nécessitant le champ `externalEventId` depuis votre application, vous pouvez utiliser les ID de contact ou l'adresse e-mail des contacts existants : * Si vous souhaitez utiliser les ID des contacts existants : * Exécutez une requête `POST` à `/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/create` en utilisant l'ID de l'événement de votre application externe en tant que propriété `externalEventId`. * Dans le corps de la requête, fournissez un objet `inputs` qui comprend les champs suivants : * `interactionDateTime` : la date et l'heure auxquelles le contact s'est inscrit à l'événement. * `vid` : l'ID d'un contact existant. * Si vous souhaitez utiliser l'adresse e-mail d'un des participants à l'événement : * Exécutez une requête `POST` à `/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/email-create`. * Dans le corps de la requête, fournissez un objet `inputs` qui comprend les champs suivants : * `interactionDateTime` : la date et l'heure auxquelles le contact s'est inscrit à l'événement. * `email` : l'adresse e-mail du participant en tant que valeur du champ d'adresse e-mail dans une entrée. * Si l'adresse e-mail que vous incluez ne correspond pas à l'adresse d'un contact existant, un nouveau contact sera créé. Pour les deux points de terminaison ci-dessus, fournissez les valeurs suivantes pour les paramètres de chemin correspondants : * `externalEventId` : l'identifiant de [l'événement marketing](https://knowledge.hubspot.com/fr/integrations/use-marketing-events#view-edit-and-analyze-marketing-events). Consultez la [section ci-dessus](#differences-between-internal-id-and-external-id-endpoints) pour plus de détails sur l'utilisation de la propriété objectId d'un événement par rapport à l'utilisation de ses ID externes. * `subscriberState` : une énumération qui correspond au nouveau statut de participation du contact. * `REGISTERED` : indique que le contact HubSpot s'est inscrit à l'événement. * `ATTENDED` : permet d'indiquer que le contact HubSpot a assisté à l'événement. Si vous mettez à jour le statut d'un contact vers ATTENDED, vous pouvez également inclure les horodatages `joinedAt` et `leftAt` comme paramètres dans le corps de la requête, spécifié dans le format ISO8601 Instant. * `CANCELLED` : indique que le contact HubSpot qui s'était préalablement inscrit à l'événement a annulé son inscription. > [!WARNING] > > ### Remarque : > > Ces API sont idempotentes tant que l'ID du contact et la valeur `interactionDateTime` dans l'événement n'ont pas changé. Cela vous permet de définir en toute sécurité le statut de participation plusieurs fois sans que HubSpot ne crée d'événements en double dans les propriétés des événements marketing. ## Points de terminaison du statut du participant Vous pouvez utiliser les points de terminaison de participation pour récupérer les données des participants à vos événements marketing. Vous pouvez interroger des données telles que des indicateurs agrégés pour un événement spécifique, ainsi que des données de participation pour un contact ou un événement spécifique. Consultez les points de terminaison de participation disponibles ci-dessous. Pour obtenir une référence complète de tous les paramètres disponibles pour chaque point de terminaison, consultez la [documentation de référence](/docs/api-reference/marketing-marketing-events-v3/guide). > [!WARNING] > > ### Remarque : > > Le nombre d'activités indiqué sur la [page des événements marketing](https://knowledge.hubspot.com/fr/integrations/use-marketing-events) de votre compte HubSpot peut différer des indicateurs agrégés correspondants du point de terminaison d'API des compteurs de participation. > > Par exemple, si un participant s'est inscrit à un événement, puis l'a annulé, puis s'est réinscrit au même événement, chacune de ces activités sera incluse dans les totaux que vous voyez dans l'interface utilisateur des événements marketing de votre compte. Si vous utilisez les points de terminaison du statut du participant ci-dessous, seul le statut actuel d'un participant est inclus dans le compteur associé pour cet indicateur (par exemple : `attended`, `registered`, `cancelled` ou `noShows`). ### Lire les participations pour un contact spécifique Pour obtenir des données de participation à des événements pour un contact spécifique, effectuez une requête `GET` à `/marketing/v3/marketing-events/participations/contacts/{contactIdentifier}/breakdown`, en utilisant l'ID ou l'adresse e-mail du contact comme paramètre de chemin `contactIdentifier`. La réponse comprendra un résumé de la participation du contact à l'événement dans le champ `properties` : ```json theme={null} { "results": [ { "associations": { "marketingEvent": { "externalAccountId": "4", "marketingEventId": "123", "externalEventId": "456", "name": "Virtual baking workshop" }, "contact": { "firstname": "Jane", "contactId": "156792341", "email": "jdoe@example.com", "lastname": "Doe" } }, "createdAt": "2024-05-21T18:35:04.838Z", "id": "string", "properties": { "occurredAt": "2024-05-22T10:35:04.838Z", "attendancePercentage": "string", "attendanceState": "REGISTERED", "attendanceDurationSeconds": 3600 } } ] } ``` ### Lire les données de répartition de la participation Pour obtenir une répartition des données de participation à un événement spécifique, utilisez votre `externalAccountId` et le `externalEventId` de votre événement pour faire une requête `GET` à `/marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}/breakdown`. ### Lire les compteurs de participation Pour obtenir un récapitulatif agrégé de la participation à un événement, utilisez votre `externalAccountId` et le `externalEventId` de votre événement pour faire une requête `GET` à `/marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}`. La réponse comprendra le nombre total de participants : ```json theme={null} { "attended": 152, "registered": 200, "cancelled": 3, "noShows": 8 } ``` ### Filtrer les données de répartition de la participation Lorsque vous récupérez des données de répartition ou des données de participation à un événement pour un contact spécifique, vous pouvez filtrer les données résultantes en utilisant les champs contactIdentifier, statut, limite ou après comme paramètres de requête dans votre requête. | Paramètre de requête | Type | Description | | - | - | - | | `contactIdentifier` | Chaîne | L'adresse e-mail ou l'ID d'un contact spécifique | | `state` | Énumération | Le statut de participation de l'événement Les statuts de participation possibles sont les suivants :
          • `REGISTERED` : le contact s'est inscrit à l'événement
          • `CANCELLED` : l'inscription du contact a été annulée.
          • `ATTENDED` : le contact a assisté à l'événement.
          • `NO_SHOW` : le contact s'est inscrit mais n'a pas assisté à l'événement.
          | | `limit` | Nombre | Permet de limiter le nombre de résultats renvoyés. Par défaut, la limite est fixée à 10. La fourchette valide est comprise entre 1 et 100. | | `after` | Nombre | Permet de paginer entre les résultats de la réponse. Consultez le décalage fourni à la page précédente des données de réponse pour déterminer le prochain indice de résultats à renvoyer. | ## Points de terminaison des associations de listes Vous pouvez utiliser les points de terminaison décrits dans les sections ci-dessous pour gérer les associations entre vos listes et vos événements marketing. La plupart de ces points de terminaison nécessitent un champ `listId` en tant que paramètre de chemin, que vous trouverez sur la page des détails de la liste dans votre compte HubSpot : * Dans votre compte HubSpot, naviguez vers **CRM** > **Listes**. * Cliquez sur le **nom** d'une liste. * Dans l'angle supérieur droit, cliquez sur **Détails**. * Dans le panneau de droite, l'ID de liste apparaîtra sous *ID de liste à utiliser pour les intégrations d'API*. Vous pouvez cliquer sur **Copier l'ID de liste** pour copier l'ID dans le presse-papiers. ![list-details-panel-list-associations-api](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/list-details-panel-list-associations-api.png) Lorsque vous associez des listes à vos événements marketing, elles apparaissent sur la page de détails d'un événement marketing dans votre compte HubSpot : * Dans votre compte HubSpot, accédez à **CRM** > **Contacts**. * En haut à gauche, cliquez sur **Contacts** et dans le menu déroulant, sélectionnez **Événements marketing**. * Cliquez sur le **nom** d'un événement marketing. * Dans l'onglet *Performances*, cliquez sur **Listes** pour développer la section, puis sur l'onglet **Listes ajoutées par le biais des associations**. ![review-list-associations-for-marketing-events-api](https://www.hubspot.fr/hubfs/Knowledge_Base_2023_2024/review-list-associations-for-marketing-events-api.png) ### Créer une association de liste avec un ID d'événement marketing Pour créer une association entre un événement marketing et une liste existante, exécutez une requête `PUT` à `/marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}`. En cas de succès, vous recevrez une réponse `204 No content`. ### Créer une association de liste avec des ID d'événement et de compte externes Pour créer une nouvelle association entre un événement marketing et une liste existante en utilisant l'ID de compte externe et l'ID d'événement externe, exécutez une requête `PUT` à `/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}`. En cas de succès, vous recevrez une réponse `204 No content`. ### Obtenir des listes associées à un événement marketing en utilisant un ID d'événement marketing Pour obtenir toutes les listes associées à un événement marketing, exécutez une `GET` requête à `/marketing/v3/marketing-events/associations/{marketingEventId}/lists`. La réponse sera au format suivant : ```json theme={null} { "total": 1, "results": [ { "listId": "string", "listVersion": 0, "createdAt": "2024-05-10T08:58:35.769Z", "updatedAt": "2024-05-10T08:58:35.769Z", "filtersUpdatedAt": "2024-05-10T08:58:35.769Z", "processingStatus": "string", "createdById": "string", "updatedById": "string", "processingType": "string", "objectTypeId": "string", "name": "string", "size": 0 } ] } ``` ### Obtenir des listes associées à un événement en utilisant des ID d'événement et de compte externes Vous pouvez également obtenir des listes associées à un événement marketing en utilisant un ID de compte externe et l'ID d'événement externe. Exécutez une requête `GET` à `/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists`. ### Supprimer l'association de liste en utilisant un ID d'événement marketing Pour supprimer une association de liste pour un événement marketing en utilisant un ID d'événement marketing, exécutez une requête `DELETE` à `/marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}`. En cas de succès, vous recevrez une réponse `204 No content`. ### Supprimer l'association de liste à l'aide d'ID d'événement et de compte externes Pour supprimer une association de liste pour un événement marketing utilisant l'ID de compte externe et un ID d'événement externe, exécutez une requête `DELETE` à `/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}`. En cas de succès, vous recevrez une réponse `204 No content`. ## Configurer les paramètres d'application Une certaine configuration est requise pour permettre aux événements marketing de se synchroniser correctement avec HubSpot. Si vous envoyez à HubSpot un changement de statut de participation (par exemple, une inscription ou une annulation), HubSpot vérifiera d'abord si un événement marketing existe pour l'ID d'événement spécifié. Si ce n'est pas le cas, HubSpot appellera le point de terminaison configuré pour votre application afin de récupérer les détails de l'événement marketing, puis créera l'événement dans HubSpot et publiera le changement de statut de participation. Ceci est fourni pour des raisons de commodité ; cependant, il est toujours recommandé que vous créiez vous-même les événements marketing via les méthodes CRUD, fournies dans la [documentation de référence ](/docs/api-reference/marketing-marketing-events-v3/guide), sans vous appuyer sur cette fonctionnalité pour créer vos événements marketing dans HubSpot. ### Étape 1 : Créer une API dans votre application Pour ce faire, HubSpot exige que chaque application qui utilise des événements marketing définisse une API pour récupérer des informations sur un événement marketing spécifique. Exigences : * Accepte : * `externalAccountId` : un paramètre de requête spécifiant accountId pour le client dans l'application externe. * `appId` : le paramètre de requête qui spécifie l'ID de l'application HubSpot qui demande les détails de l'événement. Il s'agira de l'ID de votre application. * `externalEventId` : paramètre de chemin dans l'URL de la requête qui spécifie l'ID de l'événement dans l'application externe sur laquelle HubSpot nécessite des détails. * Renvoie : * Un objet JSON qui fournit les détails de l'événement marketing, qui comprend les champs suivants détaillés dans le tableau ci-dessous : | Nom du champ | Obligatoire | Type | Description du champ | | - | - | - | - | | `eventName` | true | Chaîne | Le nom de l'événement marketing. | | `eventOrganizer` | true | Chaîne | Le nom de l'organisateur de l'événement marketing. | | `eventType` | false | Chaîne | Permet de décrire le type d'événement concerné. Par exemple : `WEBINAR`, `CONFERENCE`, `WORKSHOP` | | `startDateTime` | false | Chaîne(\$date-time) | La date et l'heure de début de l'événement marketing. | | `endDateTime` | false | Chaîne(\$date-time) | La date et l'heure de fin de l'événement marketing. | | `eventDescription` | false | Chaîne | La description de l'événement marketing. | | `eventUrl` | false | Chaîne | Une URL dans l'application d'événement externe vers l'événement marketing. | | `eventCancelled` | false | Booléen | Indique si l'événement marketing a été annulé. La valeur par défaut est `false` | HubSpot envoie également un en-tête `X-HubSpot-Signature-v3` que vous pouvez utiliser pour vérifier que la requête provient de HubSpot. Découvrez-en davantage sur les [signatures de requête](/docs/apps/legacy-apps/authentication/validating-requests) pour plus de détails sur la signature et comment la valider. ### Étape 2 : Fournir à HubSpot le chemin d'URL vers votre API Maintenant que vous avez créé l'API dans votre application qui renverra un objet fournissant les détails d'un événement marketing spécifique, vous devez fournir à HubSpot le chemin d'URL de votre API en effectuant une requête `POST` a `/marketing/v3/marketing-events/{appId}/settings`. Cela permettra à HubSpot de déterminer comment faire des requêtes à votre application pour obtenir les détails d'un événement marketing. Dans le corps de votre requête `POST`, spécifiez votre URL à l'aide du champ `eventDetailsURL`. La propriété `eventDetailsURL` doit répondre aux deux exigences suivantes : * Elle doit contenir au moins une séquence de caractères `%s`, que HubSpot utilise pour remplacer dans l'ID de l'événement (`externalEventId`) comme paramètre de chemin d'accès. * Il doit s'agir du chemin complet vers la ressource API, y compris le préfixe `https://` et le nom de domaine (par exemple : `my.event.app`). Par exemple, si vous configurez un `eventDetailsURL` de `https://my.event.app/events/%s` et que vous devez faire une requête pour récupérer les détails d'un événement avec l'ID `1234-event-XYZ`, pour l'application HubSpot avec l'ID `app-101` et le compte avec l'ID `ABC-account-789`, HubSpot fera une requête `GET` à : `https://my.event.app/events/1234-event-XYZ?appId=app-101&externalAccountId=ABC-account-789` # Get events by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/identifiers/get-marketing-events-externalId specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/{externalEventId}/identifiers Ce point de terminaison recherche dans le portail tous les événements marketing dont l'ID d'événement externe correspond à la valeur fournie dans la demande. Il récupère l'ID d'objet et d'autres détails sur l'événement pour chaque événement marketing correspondant. Étant donné que plusieurs événements marketing peuvent avoir le même ID d'événement externe, le point de terminaison renvoie tous les résultats correspondants. Remarque : les événements marketing peuvent être recherchés par ID d'événement externe quelques minutes après leur création. > **Supported products** > **Required Scopes** # Search for events by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/identifiers/search-events specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/events/search Récupère les événements marketing dont l'ID d'événement externe correspond à la valeur fournie dans la demande, en se limitant aux événements créés par l'application à l'origine de la demande. Les événements marketing créés par d'autres applications ne seront pas inclus dans les résultats. > **Supported products** > **Required Scopes** # Associate a list by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/list-associations/associate-list-externalId specs/2026-09/marketing-marketing-events-v2026-09.json PUT /marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists/{listId} Associe une liste à un événement marketing par identifiant de compte externe, identifiant d'événement externe et identifiant de liste ILS > **Supported products** > **Required Scopes** # Get associated lists by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/list-associations/get-lists-externalId specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists Obtient des listes associées à un événement marketing par identifiant de compte externe et identifiant d'événement externe > **Supported products** > **Required Scopes** # Remove a list from an event by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/list-associations/remove-list-externalId specs/2026-09/marketing-marketing-events-v2026-09.json DELETE /marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists/{listId} Dissocie une liste d'un événement marketing par identifiant de compte externe, identifiant d'événement externe et identifiant de liste ILS > **Supported products** > **Required Scopes** # Retrieve participants by contact identifier Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/participant-state/get-participants-contactId specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/participations/contacts/{contactIdentifier}/breakdown Lire les participations d'un contact par identifiant, e-mail ou identifiant interne. > **Supported products** > **Required Scopes** # Retrieve participants by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/participant-state/get-participants-externalId specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/participations/{externalAccountId}/{externalEventId} Lire les compteurs de participations à l'événement marketing par paire externalAccountId et externalEventId. > **Supported products** > **Required Scopes** # Retrieve the application settings Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/settings/get-app-settings specs/2026-09/marketing-marketing-events-v2026-09.json GET /marketing/marketing-events/2026-09/{appId}/settings Récupérer les paramètres actuels de l'application. > **Supported products** # Update the application settings Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/settings/update-app-settings specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/{appId}/settings Créer ou mettre à jour les paramètres actuels de l'application. > **Supported products** # Record a subscriber state by contact email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/subscriber-state-changes/set-subscriber-state specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/email-upsert Enregistrer un état d'abonné entre plusieurs contacts HubSpot et un événement marketing, en utilisant les adresses e-mail des contacts. Notez que le contact doit déjà exister dans HubSpot ; un contact ne sera pas créé. Le champ contactProperties est utilisé uniquement lors de la création d'un nouveau contact. Ces propriétés ne mettront pas à jour les contacts existants. > **Supported products** > **Required Scopes** # Set subscriber state by contact ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/subscriber-state-changes/set-subscriber-state-contactId specs/2026-09/marketing-marketing-events-v2026-09.json POST /marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/upsert Enregistrer un état d'abonné entre plusieurs contacts HubSpot et un événement marketing, en utilisant les identifiants de contact HubSpot. Remarque : le contact doit déjà exister dans HubSpot, un contact ne sera pas créé. > **Supported products** > **Required Scopes** # Update event by HubSpot ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/update-event specs/2026-09/marketing-marketing-events-v2026-09.json PATCH /marketing/marketing-events/2026-09/{objectId} Met à jour les détails d'un événement marketing existant identifié par son ID d'objet, s'il existe. > **Supported products** > **Required Scopes** # Partially update event by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/update-event-externalId specs/2026-09/marketing-marketing-events-v2026-09.json PATCH /marketing/marketing-events/2026-09/events/{externalEventId} Met à jour les détails d'un événement marketing existant identifié par son ID de compte externe, ID d'événement externe, s'il existe. Seuls les événements marketing créés par la même application peuvent être mis à jour. > **Supported products** > **Required Scopes** # Update event by external ID Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/marketing-events/update-marketing-event specs/2026-09/marketing-marketing-events-v2026-09.json PUT /marketing/marketing-events/2026-09/events/{externalEventId} Insère un événement marketing. S'il existe un événement marketing existant avec l'identifiant spécifié, il sera mis à jour, sinon, un nouvel événement sera créé. > **Supported products** > **Required Scopes** # Send a transactional email Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/transactional-emails/create-transactional-email specs/2026-09/marketing-transactional-single-send-v2026-09.json POST /marketing/transactional/2026-09/single-email/send Envoyez un e-mail transactionnel de manière asynchrone. Retourne le statut de l'envoi de l'e-mail avec un ID de statut qui peut être utilisé pour interroger continuellement le statut en utilisant l'API de statut d'envoi d'e-mail. > **Supported products** > **Required Scopes** # Transactional email API guide Source: https://developers.hubspot.fr/docs/api-reference/latest/marketing/transactional-emails/guide # Retrieve conversation recap data Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/notetaker/get-conversation-recap specs/2026-09/crm-notetaker-conversation-recap-v2026-09.json GET /notetaker/2026-09/conversation/recap/{objectTypeId}/{objectId} Récupérer un récapitulatif d'une conversation en fonction du type et de l'ID d'objet spécifiés. Ce point de terminaison fournit une variété d'informations relatives à la conversation, y compris : un résumé, les actions à entreprendre, les questions posées, les statistiques d'appel, les participants et l'URL de l'enregistrement. > **Supported products** > **Required Scopes** # Notetaker conversations recap API Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/notetaker/guide # Create a new calendar event for a meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/calendar/create-calendar-event specs/2026-09/scheduler-meetings-v2026-09.json POST /scheduler/2026-09/meetings/calendar Créer un nouvel événement de réunion dans votre compte HubSpot. Ce point de terminaison vous permet de spécifier des détails tels que le titre de la réunion, les heures de début et de fin, ainsi que les utilisateurs associés. L'organizerUserId est requis pour identifier l'organisateur de la réunion. > **Supported products** > **Required Scopes** # Meetings scheduler API Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/guide # Book Meeting Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/meetings/create-meeting specs/2026-09/scheduler-meetings-v2026-09.json POST /scheduler/2026-09/meetings/meeting-links/book Réserver une réunion à l'aide d'un lien de réunion spécifié. Ce point de terminaison vous permet de créer une réunion en fournissant les détails nécessaires, tels que la durée, l'e-mail et l'heure de début. Il est utile pour planifier des réunions par programmation via l'API de HubSpot. > **Supported products** > **Required Scopes** # Retrieve availability Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/meetings/get-availability specs/2026-09/scheduler-meetings-v2026-09.json GET /scheduler/2026-09/meetings/meeting-links/book/availability-page/{slug} Récupérer la disponibilité et les heures d'occupation pour un lien de prise de rendez-vous spécifique. Ce point de terminaison est utile pour vérifier les créneaux disponibles pour la réservation de réunions en fonction du slug fourni. Il nécessite de spécifier le fuseau horaire et permet éventuellement d'ajuster l'affichage du mois avec un décalage. > **Supported products** > **Required Scopes** # Retrieve meeting links Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/meetings/get-meeting-links specs/2026-09/scheduler-meetings-v2026-09.json GET /scheduler/2026-09/meetings/meeting-links Récupérer une liste de liens de réunion disponibles dans le compte HubSpot. Ce point de terminaison permet de filtrer selon divers critères, tels que le nom de la réunion, l'ID de l'utilisateur organisateur et le type de réunion. Il prend en charge la pagination pour naviguer à travers de grands ensembles de résultats. > **Supported products** > **Required Scopes** # Retrieve booking info Source: https://developers.hubspot.fr/docs/api-reference/latest/meetings/scheduler/meetings/get-meeting-slug specs/2026-09/scheduler-meetings-v2026-09.json GET /scheduler/2026-09/meetings/meeting-links/book/{slug} Récupérer les informations de réservation détaillées pour un lien de prise de rendez-vous spécifique en utilisant son slug. Ce point de terminaison fournit des informations sur la disponibilité et les paramètres associés au lien de prise de rendez-vous. Il est utile pour comprendre le contexte de la réservation et s'assurer que le fuseau horaire correct est appliqué. > **Supported products** > **Required Scopes** # Retrieve payment accounts status Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-accounts/get-payment-account specs/2026-09/commerce-paymentsaccounts-v2026-09.json GET /commerce/payment-accounts/2026-09/status Récupérer le statut des comptes de paiement dans votre compte HubSpot. Ce point de terminaison fournit des informations sur la capacité du compte à effectuer des transactions et des virements, son état d'inscription, la date ou l'heure de sa dernière transaction, et les types de prestataires de services de paiement auxquels il est éligible. Utilisez ceci pour surveiller et gérer le statut opérationnel de votre compte de paiement. > **Supported products** > **Required Scopes** # Payments accounts API Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-accounts/guide # Create a payment link Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/create-payment-link specs/2026-09/commerce-payment-links-v2026-09.json POST /commerce/payment-links/2026-09/payment-links Créez un nouveau lien de paiement dans votre compte HubSpot. Ce point de terminaison vous permet de spécifier divers attributs pour le lien de paiement, tels que les modes de paiement acceptés, la devise et les champs de formulaire supplémentaires. Le lien de paiement peut être configuré pour une utilisation unique et peut également collecter les adresses de livraison et de facturation. Cette opération nécessite un corps de requête JSON valide. Certaines valeurs par défaut seront appliquées si aucune valeur n'est fournie. > **Supported products** > **Required Scopes** # Delete a payment link Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/delete-payment-link specs/2026-09/commerce-payment-links-v2026-09.json DELETE /commerce/payment-links/2026-09/payment-links/{paymentLinkId} Supprimez un lien de paiement spécifique dans votre compte HubSpot. Cette opération est irréversible et supprimera le lien de paiement identifié par l'ID fourni. Utilisez ce point de terminaison pour gérer et nettoyer les liens de paiement qui ne sont plus nécessaires. > **Supported products** > **Required Scopes** # Retrieve a payment link Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/get-payment-link specs/2026-09/commerce-payment-links-v2026-09.json GET /commerce/payment-links/2026-09/payment-links/{paymentLinkId} Récupérez les détails d'un lien de paiement spécifique à l'aide de son identifiant unique. Ce point de terminaison vous permet d'accéder aux informations concernant le lien de paiement, y compris son statut et sa configuration. Il est utile pour vérifier les paramètres ou le statut actuels d'un lien de paiement dans votre compte HubSpot. > **Supported products** > **Required Scopes** # Retrieve payment links Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/get-payment-links specs/2026-09/commerce-payment-links-v2026-09.json GET /commerce/payment-links/2026-09/payment-links Récupérer une liste de liens de paiement depuis votre compte HubSpot. Ce point de terminaison vous permet de filtrer et de trier les liens de paiement en fonction de divers critères, tels que les horodatages de création et de mise à jour. Il prend en charge la pagination et peut inclure les liens de paiement archivés si spécifié. > **Supported products** > **Required Scopes** # Payment links API Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/guide # Update a payment link Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/payment-links/update-payment-link specs/2026-09/commerce-payment-links-v2026-09.json PATCH /commerce/payment-links/2026-09/payment-links/{paymentLinkId} Mettre à jour un lien de paiement par ID. > **Supported products** > **Required Scopes** # Activate a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/activate-price-book specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/activate Activer un catalogue des prix spécifique dans votre compte HubSpot. Cette opération modifie le statut du catalogue des prix en « actif », ce qui lui permet d'être utilisé dans les transactions et autres opérations. Assurez-vous que l'identifiant du catalogue des prix est correct avant l'activation. > **Supported products** > **Required Scopes** # Create a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/create-price-book specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books Créer un nouveau catalogue des prix dans votre compte HubSpot. Ce point de terminaison vous permet de définir des propriétés personnalisées, un nom et les devises prises en charge pour le catalogue des prix. Une requête réussie renverra l'URL de la ressource nouvellement créée. > **Supported products** > **Required Scopes** # Deactivate a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/deactivate-price-book specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/deactivate Désactiver un catalogue des prix spécifique dans votre compte HubSpot. Cette action modifie le statut du catalogue des prix en inactif, le rendant indisponible pour les transactions. Utilisez ce point de terminaison lorsque vous devez désactiver temporairement ou définitivement un catalogue des prix sans le supprimer. > **Supported products** > **Required Scopes** # Delete a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/delete-price-book specs/2026-09/commerce-price-books-v2026-09.json DELETE /commerce/price-books/2026-09/price-books/{priceBookId} Supprimer un catalogue des prix spécifique de votre compte HubSpot à l'aide de son identifiant unique. Cette opération supprimera définitivement le catalogue des prix et ses données associées, le rendant indisponible pour une utilisation future. > **Supported products** > **Required Scopes** # Retrieve a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/get-price-book specs/2026-09/commerce-price-books-v2026-09.json GET /commerce/price-books/2026-09/price-books/{priceBookId} Récupérer un catalogue des prix spécifique à l'aide de son identifiant unique dans votre compte HubSpot. Ce point de terminaison vous permet d'accéder à des informations détaillées sur un catalogue des prix, y compris son statut et les devises prises en charge. Il peut être utile pour gérer et examiner les stratégies de tarification au sein de votre système de commerce. > **Supported products** > **Required Scopes** # Retrieve price books Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/get-price-books specs/2026-09/commerce-price-books-v2026-09.json GET /commerce/price-books/2026-09/price-books Récupérer une liste des catalogues de prix disponibles dans votre compte HubSpot. Ce point de terminaison prend en charge la pagination et peut renvoyer les catalogues de prix archivés si spécifié. Il est utile pour accéder aux informations de tarification et les gérer pour différents produits et services. > **Supported products** > **Required Scopes** # Price books API Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/guide # Add a product to a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/add-product-to-price-book specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/items Ajouter de nouveaux éléments à un catalogue des prix spécifié dans votre compte HubSpot. Ce point de terminaison vous permet d'associer des produits à un catalogue des prix en fournissant les détails de produit nécessaires. Il est utile pour gérer et mettre à jour efficacement le contenu de vos catalogues des prix. > **Supported products** > **Required Scopes** # Archive price book items Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/batch/batch-archive-price-book-items specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/archive Archiver plusieurs éléments au sein d'un catalogue des prix spécifié en une seule opération par lot. Ce point de terminaison est utile pour gérer de grands ensembles d'éléments de catalogue des prix qui doivent être archivés simultanément, ce qui simplifie le processus et réduit le nombre de requêtes individuelles. > **Supported products** > **Required Scopes** # Add products to a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/batch/batch-create-price-book-items specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create Créez plusieurs articles dans un catalogue des prix spécifié en une seule opération par lot. Ce point de terminaison est utile pour ajouter efficacement un grand nombre d'articles à un catalogue des prix, réduisant ainsi le besoin de multiples requêtes individuelles. L'opération renvoie une réponse par lot indiquant le succès ou l'échec de chaque création d'article. > **Supported products** > **Required Scopes** # Update price book items Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/batch/batch-update-price-book-items specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/update Mettre à jour plusieurs articles dans un catalogue des prix spécifié en une seule opération de lot. Ce point de terminaison permet des mises à jour efficaces des articles du catalogue des prix, ce qui est utile pour gérer de grands ensembles de données au sein d'un catalogue des prix. L'opération renvoie une réponse de lot indiquant le succès ou l'échec de chaque mise à jour d'article. > **Supported products** > **Required Scopes** # Delete a price book item Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/delete-price-book-item specs/2026-09/commerce-price-books-v2026-09.json DELETE /commerce/price-books/2026-09/price-books/{priceBookId}/items/{priceBookItemId} Supprimer un élément spécifique d'un catalogue des prix dans votre compte HubSpot. Cette opération est irréversible et supprimera définitivement l'élément identifié par priceBookItemId du catalogue des prix spécifié par priceBookId. > **Supported products** > **Required Scopes** # Retrieve a price book item Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/get-price-book-item specs/2026-09/commerce-price-books-v2026-09.json GET /commerce/price-books/2026-09/price-books/{priceBookId}/items/{priceBookItemId} Récupérer un article spécifique d'un catalogue des prix à l'aide de ses identifiants uniques. Ce point de terminaison vous permet d'accéder à des informations détaillées sur un article particulier au sein d'un catalogue des prix spécifié, y compris ses propriétés et son statut archivé, le cas échéant. > **Supported products** > **Required Scopes** # Retrieve price book items Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/get-price-book-items specs/2026-09/commerce-price-books-v2026-09.json GET /commerce/price-books/2026-09/price-books/{priceBookId}/items Récupérer une liste d'articles associés à un catalogue des prix spécifique dans votre compte HubSpot. Ce point de terminaison vous permet de paginer les articles et de spécifier les propriétés à inclure dans la réponse. Il est utile pour gérer et consulter les détails des produits liés à un catalogue des prix particulier. > **Supported products** > **Required Scopes** # Update a price book item Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/items/update-price-book-item specs/2026-09/commerce-price-books-v2026-09.json PATCH /commerce/price-books/2026-09/price-books/{priceBookId}/items/{priceBookItemId} Mettre à jour un élément spécifique au sein d'un catalogue des prix dans votre compte HubSpot. Cette opération vous permet de modifier des détails tels que la tarification, la fréquence de facturation et les propriétés personnalisées pour l'élément spécifié. Assurez-vous que l'élément est correctement identifié par ses identifiants uniques priceBookId et priceBookItemId. > **Supported products** > **Required Scopes** # Update a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/update-price-book specs/2026-09/commerce-price-books-v2026-09.json PATCH /commerce/price-books/2026-09/price-books/{priceBookId} Mettre à jour un catalogue des prix existant dans votre compte HubSpot. Cette opération vous permet de modifier des détails tels que le nom, la description, les devises prises en charge et les propriétés personnalisées d'un catalogue des prix. Elle est utile pour maintenir les informations de votre catalogue des prix à jour avec les dernières modifications. > **Supported products** > **Required Scopes** # Validate a price book Source: https://developers.hubspot.fr/docs/api-reference/latest/revenue/price-books/validate-price-book specs/2026-09/commerce-price-books-v2026-09.json POST /commerce/price-books/2026-09/price-books/{priceBookId}/validate Valider un catalogue des prix spécifique dans votre compte HubSpot. Ce point de terminaison vérifie l'intégrité et l'exactitude du catalogue des prix identifié par le priceBookId donné. Utilisez-le pour vous assurer que le catalogue des prix répond à tous les critères nécessaires avant de procéder à d'autres opérations. > **Supported products** > **Required Scopes** # Webhooks journal and management APIs (2026-09) Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/guide # Get the earliest journal entry Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/aggregate/get-journal-earliest specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal/2026-09/earliest Récupérer la première entrée du journal des webhooks pour le portail spécifié. Ce point de terminaison est utile pour accéder au premier événement de webhook enregistré dans le journal, ce qui peut être utile à des fins d'audit ou de débogage. > **Supported products** # Get journal status Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/aggregate/get-journal-status specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal/2026-09/status/{statusId} Récupérer le statut d'une entrée de journal de webhook spécifique à l'aide de son ID de statut unique. Ce point de terminaison fournit des informations détaillées sur le statut, y compris s'il est en attente, en cours, terminé, échoué ou expiré. Il est utile pour surveiller et gérer l'état des entrées de journal de webhook. > **Supported products** # Read journal entries in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/aggregate/get-read specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json POST /webhooks-journal/journal/2026-09/batch/read Exécuter une opération de lecture par lots sur le journal des webhooks pour la date spécifiée, 03-2026. Ce point de terminaison vous permet de récupérer plusieurs entrées du journal des webhooks en une seule requête, ce qui peut être utile pour traiter efficacement de grandes quantités de données. Assurez-vous que le corps de la requête est fourni dans le format requis. > **Supported products** # Webhook journal APIs Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/guide # Get the earliest local journal entries in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/batch/get-webhook specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/batch/earliest/{count} Récupérer le lot le plus ancien d'entrées du journal de webhook. Ce point de terminaison est utile pour accéder aux données les plus anciennes disponibles dans le journal de webhook, permettant aux utilisateurs de traiter ou d'analyser les événements de webhook historiques. Le nombre d'entrées à récupérer est spécifié par le paramètre de chemin « count ». > **Supported products** # Get the latest local journal entries in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/batch/get-webhook-count specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/batch/latest/{count} Récupérez le dernier lot d'entrées du journal de webhook. Ce point de terminaison vous permet de spécifier le nombre d'entrées à récupérer, offrant ainsi un moyen d'accéder aux événements de webhook les plus récents traités par votre compte HubSpot. > **Supported products** # Read local journal entries in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/batch/get-webhooks specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json POST /webhooks-journal/journal-local/2026-09/batch/read Exécuter une opération de lecture par lots sur le journal des webhooks. Ce point de terminaison vous permet de récupérer un lot d'entrées du journal des webhooks en fournissant les données d'entrée nécessaires. Il est utile pour traiter plusieurs fiches d'informations en une seule requête, ce qui simplifie les tâches de récupération de données. > **Supported products** # Get the earliest local journal entry Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/get-journal-local-earliest specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/earliest Récupérer les premières entrées du journal de webhook pour le portail spécifié. Ce point de terminaison peut être utilisé pour accéder aux plus anciennes fiches d'informations disponibles dans le journal de webhook, ce qui peut être utile pour l'audit ou l'analyse historique. > **Supported products** # Get the latest local journal entry Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/get-journal-local-latest specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/latest Récupérer les dernières entrées du journal des webhooks pour le portail spécifié. Ce point de terminaison est utile pour accéder aux événements de webhook les plus récents qui ont été enregistrés, permettant une surveillance en temps réel ou le débogage des activités de webhook. > **Supported products** # Get the next local journal entry Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/get-journal-local-next specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/offset/{offset}/next Récupérer le lot suivant d'entrées de journal de webhook à partir d'un décalage spécifié. Ce point de terminaison est utile pour la pagination à travers de grands ensembles de données de webhook, vous permettant de continuer là où une requête précédente s'est arrêtée. > **Supported products** # Get local journal status Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/journal-entries/local/get-journal-local-status specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/journal-local/2026-09/status/{statusId} Récupérer le statut d'une entrée de journal de webhook spécifique à l'aide de son ID de statut unique. Ce point de terminaison est utile pour surveiller la progression ou le résultat des entrées de journal de webhook, vous permettant de vérifier si une entrée est en attente, en cours, terminée, échouée ou expirée. > **Supported products** # Create CRM object snapshots Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/snapshots/create-webhook specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json POST /webhooks-journal/snapshots/2026-09/crm Créer un lot d'instantanés d'objets CRM dans HubSpot. Ce point de terminaison est utilisé pour capturer l'état actuel des objets CRM spécifiés à des fins de référence ou d'analyse ultérieure. Il nécessite une charge utile JSON contenant les détails des objets CRM à capturer. Cette opération est exempte des limites de débit quotidiennes et de dix secondes. > **Supported products** # Webhook CRM snapshots API Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/snapshots/guide # Create a subscription filter Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/create-filters specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json POST /webhooks-journal/subscriptions/2026-09/filters Créer un nouveau filtre pour un abonnement de webhook spécifique dans le compte HubSpot. Ce point de terminaison vous permet de définir les conditions qui déterminent le déclenchement d'un webhook. Le filtre est associé à un abonnement identifié par son ID, et la requête doit inclure les détails du filtre. > **Supported products** # Create or update a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/create-subscription specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json POST /webhooks-journal/subscriptions/2026-09 Créez un nouvel abonnement au journal de webhook pour le portail spécifié. Ce point de terminaison vous permet de définir les actions et les types d'objets que l'abonnement surveillera. Il nécessite un corps de requête avec les détails de l'abonnement. > **Supported products** # Delete a subscription filter Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/delete-filter specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json DELETE /webhooks-journal/subscriptions/2026-09/filters/{filterId} Supprimer un filtre spécifique des abonnements au journal des webhooks. Cette opération est utile pour gérer et nettoyer les filtres qui ne sont plus nécessaires. Une fois supprimé, le filtre ne peut pas être récupéré. > **Supported products** # Delete a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/delete-subscription specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json DELETE /webhooks-journal/subscriptions/2026-09/{subscriptionId} Supprimer un abonnement spécifique au journal de webhook à l'aide de son identifiant unique. Cette opération est utile pour gérer et nettoyer les abonnements qui ne sont plus nécessaires dans votre compte HubSpot. > **Supported products** # Delete all subscriptions for an account Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/delete-subscriptions-by-portal specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json DELETE /webhooks-journal/subscriptions/2026-09/portals/{portalId} Supprimer un abonnement au journal de webhook pour un portail spécifique. Cette opération supprime l'abonnement associé à l'ID de portail donné, garantissant qu'aucun autre événement de webhook n'est envoyé pour ce portail. Utiliser ce point de terminaison pour gérer et nettoyer les abonnements qui ne sont plus nécessaires. > **Supported products** # Get a subscription filter Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/get-filter specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/subscriptions/2026-09/filters/{filterId} Récupérer un filtre spécifique associé à un abonnement au journal des webhooks. Ce point de terminaison vous permet d'accéder aux détails du filtre identifié par le filterId, ce qui est utile pour gérer et comprendre les conditions appliquées aux événements de webhook. > **Supported products** # Get filters for a subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/get-filters-by-subscription specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/subscriptions/2026-09/filters/subscription/{subscriptionId} Récupérez les filtres associés à un abonnement de webhook spécifique. Ce point de terminaison vous permet de visualiser les filtres appliqués à un abonnement, ce qui peut aider à gérer et à comprendre les conditions définies pour les événements de webhook. > **Supported products** # Get all subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/get-subscriptions specs/2026-09/webhooks-journal-webhooks-journal-v2026-09.json GET /webhooks-journal/subscriptions/2026-09 Récupérer une liste d'abonnements au journal des webhooks. Ce point de terminaison permet d'accéder aux détails des abonnements sans pagination, vous permettant de visualiser tous les abonnements actuels en une seule requête. Il est utile pour gérer et examiner les abonnements aux webhooks de votre application. > **Supported products** # Webhooks journal management APIs (2026.03) Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/guide # Update event subscriptions in batch Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks-journal/subscriptions/update-webhooks specs/2026-09/webhooks-webhooks-v2026-09.json POST /app-webhooks/2026-09/{appId}/subscriptions/batch/update Créer en lot des abonnements aux événements pour l'application spécifiée. > **Supported products** # Webhooks API guide Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/guide # Batch create event subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/batch/create-webhooks specs/2026-09/webhooks-webhooks-v2026-09.json POST /app-webhooks/2026-09/{appId}/subscriptions/batch/update Créer en lot des abonnements aux événements pour l'application spécifiée. > **Supported products** > **Required Scopes** # Create an event subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/create-webhook-appId specs/2026-09/webhooks-webhooks-v2026-09.json POST /app-webhooks/2026-09/{appId}/subscriptions Créer un nouvel abonnement aux événements pour l'application spécifiée. > **Supported products** > **Required Scopes** # Delete webhook settings Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/delete-webhook-appId specs/2026-09/webhooks-webhooks-v2026-09.json DELETE /app-webhooks/2026-09/{appId}/settings Supprimez les paramètres de webhook pour l'application spécifiée. Les abonnements aux événements ne seront pas supprimés, mais seront mis en pause jusqu'à la création d'un autre webhook. > **Supported products** > **Required Scopes** # Read an event subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/get-webhook-subscriptionId specs/2026-09/webhooks-webhooks-v2026-09.json GET /app-webhooks/2026-09/{appId}/subscriptions/{subscriptionId} Récupérer un abonnement d'événement spécifique par ID. > **Supported products** > **Required Scopes** # Read webhook settings Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/get-webhooks-appId specs/2026-09/webhooks-webhooks-v2026-09.json GET /app-webhooks/2026-09/{appId}/settings Récupérez les paramètres du webhook pour l'application spécifiée, y compris l'URL cible du webhook, la configuration de ralentissement et la date de création/mise à jour. > **Supported products** > **Required Scopes** # Read event subscriptions Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/get-webhooks-subscriptions specs/2026-09/webhooks-webhooks-v2026-09.json GET /app-webhooks/2026-09/{appId}/subscriptions Récupérer les abonnements aux événements pour l'application spécifiée. > **Supported products** > **Required Scopes** # Update webhook settings Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/update-webhook specs/2026-09/webhooks-webhooks-v2026-09.json PUT /app-webhooks/2026-09/{appId}/settings Mettre à jour les paramètres du webhook pour l'application spécifiée. > **Supported products** > **Required Scopes** # Update an event subscription Source: https://developers.hubspot.fr/docs/api-reference/latest/webhooks/subscriptions/update-webhook-subscriptionId specs/2026-09/webhooks-webhooks-v2026-09.json PATCH /app-webhooks/2026-09/{appId}/subscriptions/{subscriptionId} Mettre à jour un abonnement à un événement existant par ID. > **Supported products** > **Required Scopes** # Construire avec les profils de configuration Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/build-with-config-profiles # Testez vos applications HubSpot avec des comptes de test configurables Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/configurable-test-accounts # Account CLI commands Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/commands/account-commands # CMS CLI commands Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/commands/cms-commands # Custom object CLI commands Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/commands/custom-object-commands # General CLI commands Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/commands/general-commands # HubDB CLI commands Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/commands/hubdb-commands # Installer l'ILC HubSpot Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/install-the-cli # Authenticate the CLI with personal access keys Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/personal-access-key # Référence CLI des projets (BÊTA) Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/project-commands # Commandes ILC HubSpot (v7) Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/hubspot-cli/reference # Troubleshooting Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/troubleshooting # Installez l'extension HubSpot Visual Studio Code Source: https://developers.hubspot.fr/docs/developer-tooling/local-development/vs-code-extension # Premiers pas : présentation Source: https://developers.hubspot.fr/docs/developer-tooling/overview Découvrez comment faire vos premiers pas de développement avec HubSpot. 'Découvrez comment faire vos premiers pas de développement avec HubSpot.'; Que vous soyez un nouveau développeur HubSpot ou que vous cherchiez à étendre vos compétences, cette section vous guidera tout au long du processus de mise en route et de fonctionnement. Vous découvrirez les différentes options de développement disponibles ainsi que les outils et les comptes spécifiques dont vous aurez besoin pour atteindre vos objectifs. ## Les avantages d'une plateforme connectée Tout d'abord, il convient de se pencher sur ce qui fait de HubSpot une plateforme puissante pour les développeurs. Le fondement de chaque compte HubSpot est la plateforme CRM [](/docs/guides/crm/understanding-the-crm) (gestion de la relation client), une base de données de relations et de processus commerciaux. HubSpot propose aux développeurs et partenaires externes différents moyens de travailler avec le système CRM afin de créer une valeur ajoutée pour les utilisateurs finaux de HubSpot. Celui-ci offre notamment les possibilités suivantes : * Créer des intégrations et/ou des extensions avec les API de HubSpot pour synchroniser les données entre HubSpot et des plateformes externes. * Concevoir des sites web personnalisés en utilisant le CMS (système de gestion de contenu) de HubSpot. En plus d'une suite complète d'outils de gestion de contenu, le CMS s'intègre totalement au CRM. Cela facilite la gestion du lancement des campagnes, de l'acquisition de leads et de la communication continue avec les clients. * Personnaliser le CRM avec des extensions d'interface utilisateur. Les développeurs peuvent utiliser React pour créer des cartes personnalisées flexibles qui s'intègrent parfaitement à HubSpot. Dans la section suivante, vous aurez un aperçu des outils disponibles pour les développeurs HubSpot. Ensuite, vous choisirez une option pour poursuivre votre parcours de développeur HubSpot. ## 1. Installer des outils pour vous aider dans la conception Il existe une large gamme d'outils disponibles pour les développeurs HubSpot. La combinaison d'outils dont vous aurez besoin dépendra de vos objectifs spécifiques. * **ILC HubSpot :** l'installation de l'ILC HubSpot pour le développement local est un excellent point de départ pour de nombreuses tâches de développement. L'ILC est utilisée lors de la création d'extensions d'interface utilisateur et de ressources CMS. Elle peut être utilisée pour créer et gérer des secrets, des tables HubDB et des données d'objets personnalisés à partir de votre compte. Vous devez avoir installé [Node.js](https://nodejs.org/en/) (la version 18 ou une version ultérieure est requise. La version LTS est recommandée). Pour installer l'ILC de manière globale, exécutez la commande suivante : ```shell theme={null} npm i -g @hubspot/cli ``` * **Visual Studio Code :** l'installation de [Visual Studio Code](https://code.visualstudio.com/) vous permet de bénéficier de l'extension [HubSpot Visual Studio Code](https://developers.hubspot.com/docs), qui vous permet de centraliser votre workflow de développement. * **Bibliothèques clients** : HubSpot fournit des bibliothèques clients pour [Node](https://github.com/HubSpot/hubspot-api-nodejs), [PHP](https://github.com/HubSpot/hubspot-api-php), [Ruby](https://github.com/HubSpot/hubspot-api-ruby) et [Python](https://github.com/HubSpot/hubspot-api-python). * **Postman :** utilisez [Postman](https://www.postman.com/) pour accéder aux [collections Postman de HubSpot](https://www.postman.com/hubspot). Dans la documentation sur les API de HubSpot, vous trouverez des boutons permettant d'exécuter des appels à l'aide de la collection. ![run-in-postman-current-docs-site](https://www.hubspot.com/hubfs/run-in-postman-current-docs-site.png) Découvrez-en davantage sur [les outils de développement de HubSpot](/docs/developer-tooling/overview). ## 2. Choisir ce qu'il faut concevoir Il n'y a pas de solution unique pour développer avec HubSpot. Il s'agit d'une plateforme flexible qui peut répondre à un large éventail de besoins. L'une des quatre grandes catégories énumérées ci-dessous devrait couvrir la plupart de ces besoins. Vous pouvez choisir celle qui vous convient le mieux pour une brève présentation, accompagnée de quelques actions immédiates pour vous aider à démarrer. Vous pouvez également découvrir les meilleurs outils pour ce travail et savoir si un [type spécifique de compte HubSpot](/docs/getting-started/account-types) est nécessaire. * [Utiliser des API et créer des intégrations](https://developers.hubspot.com#use-apis-and-build-integrations) * [Créer des applications pour le marketplace](https://developers.hubspot.com#build-for-the-app-marketplace) * [Personnaliser l'interface utilisateur HubSpot](https://developers.hubspot.com#customize-the-hubspot-ui) * [Créer des sites web personnalisés](https://developers.hubspot.com#build-custom-websites) ## 3. Rejoignez vos pairs Entrez en contact avec vos pairs qui créent déjà sur HubSpot. Posez des questions, partagez vos connaissances, créez une communauté et tissez des liens. * [Slack pour les développeurs](https://developers.hubspot.com/community) * [Forums des développeurs](https://community.hubspot.com/t5/HubSpot-Developers/ct-p/developers) * [GitHub pour les développeurs](https://github.com/hubspotdev) ## 4. Étendez vos connaissances à votre façon Une fois que vous êtes opérationnel, de nombreuses ressources sont disponibles pour vous aider à approfondir vos connaissances. Vous pouvez accéder à des guides approfondis, à des documents de référence détaillés ou aux [cours de HubSpot Academy](https://academy.hubspot.com/courses), selon votre méthode d'apprentissage préférée. # Modifications importantes apportées à la plateforme HubSpot Source: https://developers.hubspot.fr/docs/developer-tooling/platform/breaking-change-definition # Instructions et limites d'utilisation de l'API Source: https://developers.hubspot.fr/docs/developer-tooling/platform/usage-guidelines # Gestion des versions de la plateforme développeur Source: https://developers.hubspot.fr/docs/developer-tooling/platform/versioning # Node Source: https://developers.hubspot.fr/docs/developer-tooling/sdks/node # Php Source: https://developers.hubspot.fr/docs/developer-tooling/sdks/php # Python Source: https://developers.hubspot.fr/docs/developer-tooling/sdks/python # Ruby Source: https://developers.hubspot.fr/docs/developer-tooling/sdks/ruby # Use Postman collections to make API requests to HubSpot Source: https://developers.hubspot.fr/docs/developer-tooling/third-party-tools/postman # Configurer les actions GitHub (BETA) Source: https://developers.hubspot.fr/docs/developer-tooling/third-party-tools/set-up-github-actions