Instant Experience

Instant Experience désigne une destination après clic, qui se charge en plein écran de manière quasi instantanée à partir des publicités diffusées dans le flux.

Dans l’API, les campagnes Instant Experience sont signalées par canvas. Ce format était autrefois appelé canevas.

Avant de commencer

Pour créer et gérer des Instant Experiences, vous avez besoin :

Limites

  • Seules les Instant Experience non publiées peuvent être mises à jour.
  • Pour Instagram, l’API Instant Experience est disponible de façon limitée.
  • Les publicités qui utilisent des Instant Experiences ne sont pas prises en charge par les Stories Facebook.

Créer

Pour créer une Instant Experience, vous aurez besoin de l’ID d’une Page Facebook (PAGE-ID) et des éléments, par exemple photos, boutons et texte, que vous souhaitez inclure dans votre expérience.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

Éléments

NomDescription

Bouton

Bouton dans une Instant Experience. Le champ button_style est obligatoire.

Carrousel

Carrousel pour l’Instant Experience.

Pied de page

Pied de page pour l’Instant Experience.

En-tête

En-tête pour l’Instant Experience.

Photo

Photo dans une Instant Experience. Vous devez fournir un élément PHOTO-ID pour une photo importée sur une Page Facebook.

Liste de produits

Liste de produits pour une Instant Experience.

Ensemble de produits

Ensemble de produits qui proviennent du catalogue produits de publicités de catalogue Advantage+ et qui sont affichés dans une Instant Experience.

Carte des boutiques

Carte des boutiques dans une Instant Experience.

Texte

Texte (et sa mise en forme) affiché dans une Instant Experience.

Vidéo

Vidéo dans une Instant Experience. Vous devez fournir un élément VIDEO-ID pour une vidéo importée sur une Page Facebook.

Supprimer un élément

Pour supprimer un élément, envoyez une requête DELETE avec l'ID de l'élément que vous souhaitez supprimer.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <CANVAS_ELEMENT_ID>,
  RequestInterface::METHOD_DELETE,
  array())->getContent();
curl -X DELETE \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ELEMENT_ID>

Récupérer une Instant Experience existante

Pour récupérer des informations sur une Instant Experience existante, vous avez besoin de l’ID de l’Instant Experience (CANVAS-ID).

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'name',
  ),
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "name" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Récupérer toutes les Instant Experiences d’une Page

Pour récupérer des informations sur toutes les Instant Experiences existantes d’une Page Facebook, vous avez besoin de l’ID de la Page (PAGE-ID).

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'background_color',
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'last_editor',
    'name',
    'owner',
    'update_time',
  ),
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "background_color", 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "last_editor", 
    "name", 
    "owner", 
    "update_time" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

Mettre à jour une Instant Experience

Vous ne pouvez mettre à jour que des Instant Experiences non publiées et pour cela, vous aurez besoin des ID de l’Instant Experience concernée (CANVAS-ID) et de tous les éléments ID à mettre à jour.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Utiliser un modèle

Vous pouvez utiliser un modèle afin de créer rapidement une Instant Experience pour un objectif commercial particulier. La disposition de chaque modèle est fixe. Toutefois, vous pouvez remplacer le contenu par défaut par vos propres images, vidéos, produits, textes et liens.

Nom du modèle dans l’APIID du modèleDescription

Acquisition d’une nouvelle clientèle

133471657203838

Favorisez les conversions avec une page de destination mobile incitant à l’action. Modèle Acquisition de clientèle dans le Gestionnaire de publicités.

Mise en valeur de votre entreprise

1063217037112304

Offrez aux utilisateur·ices un moyen intéressant de découvrir votre marque, vos produits ou vos services. Modèle Narration dans le Gestionnaire de publicités.

Vente de produits (sans catalogue)

424787857903852

Créez une expérience d’achat sur mobile en important des informations sur vos produits, plutôt qu’en utilisant un catalogue. Modèle Vente de produits (sans catalogue) dans le Gestionnaire de publicités.

Vente de produits : disposition Style de vie

1369752616394017

Offrez aux utilisateur·ices la possibilité de découvrir vos produits en action en les présentant sur des photos. Modèle Lookbook dans le Gestionnaire de publicités.

Vente de produits : disposition Grille

1932289657009030

Utilisez votre catalogue produits pour créer une expérience permettant aux utilisateur·ices d’acheter directement depuis leur appareil mobile. Modèle Vitrine dans le Gestionnaire de publicités.

Expérience AR

Le Modèle Expérience AR n’est disponible que via le Gestionnaire de publicités.

Obtenir des types d’éléments depuis un modèle

Étape 1. Obtenir les informations du document pour le modèle

Envoyez une requête GET pour déterminer quels éléments sont nécessaires pour un modèle particulier, Acquérir une nouvelle clientèle dans l'exemple suivant.

curl -i -X GET \
 "https://graph.facebook.com/VERSION/133471657203838?fields=document&access_token=ACCESS-TOKEN"

Exemple de réponse

{
  "document": {
    "name": "Get New Customers",
    "id": "397246414010297"
  },
  "id": "133471657203838"
}

Étape 2. Obtenir les types d’éléments

Utilisez l'ID du champ document pour obtenir des éléments spécifiques disponibles pour un modèle particulier.

curl -i -X GET \
 "https://graph.facebook.com/VERSION/397246414010297?fields=body_elements&access_token=ACCESS-TOKEN"

La liste renvoyée montre les types d'éléments qui sont disponibles pour une utilisation dans le modèle Acquérir une nouvelle clientèle.

    {
  "body_elements": [
    {
      "name": "Cover Image or Video",
      "element_type": "PHOTO",
      "id": "397271930674412"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271920674413"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271910674414"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271914007747"
    },
    {
      "name": "Carousel",
      "element_type": "CAROUSEL",
      "id": "397271940674411"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271917341080"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271924007746"
    }
  ],
  "id": "397246414010297"
}

Publier

Pour publier votre Instant Experience, envoyez une requête POST à votre ID d'Instant Experience (CANVAS-ID) et définissez le champ is_published sur true.

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'is_published' => true,
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'is_published=1' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

Créer un contenu publicitaire

Créez un contenu publicitaire à l’aide du lien d’accès à une Instant Experience existante (CANVAS-LINK).

curl -X POST \ -F 'image_hash="<IMAGE_HASH>"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "link_data": { "image_hash": "<IMAGE_HASH>", "link": "<CANVAS_LINK>", "name": "Creative message", "call_to_action": { "type": "LEARN_MORE" } } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adcreatives
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const AdCreative = bizSdk.AdCreative; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'image_hash' : '<imageHash>', 'object_story_spec' : {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, }; const adcreatives = (new AdAccount(id)).createAdCreative( fields, params ); logApiCallResult('adcreatives api call complete.', adcreatives);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\AdCreative; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'image_hash' => '<imageHash>', 'object_story_spec' => array('page_id' => '<pageID>','link_data' => array('image_hash' => '<imageHash>','link' => '<canvasURI>','name' => 'Creative message','call_to_action' => array('type' => 'LEARN_MORE'))), ); echo json_encode((new AdAccount($id))->createAdCreative( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.adcreative import AdCreative from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'image_hash': '<imageHash>', 'object_story_spec': {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, } print AdAccount(id).create_ad_creative( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createAdCreative() .setImageHash(\"<imageHash>\") .setObjectStorySpec( new AdCreativeObjectStorySpec() .setFieldLinkData( new AdCreativeLinkData() .setFieldCallToAction( new AdCreativeLinkDataCallToAction() .setFieldType(AdCreativeLinkDataCallToAction.EnumType.VALUE_LEARN_MORE) ) .setFieldImageHash(\"<imageHash>\") .setFieldLink(\"<canvasURI>\") .setFieldName(\"Creative message\") ) .setFieldPageId(\"<pageID>\") ) .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) adcreatives = ad_account.adcreatives.create({ image_hash: '<imageHash>', object_story_spec: {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, })

Une fois le contenu publicitaire prêt, vous pouvez passer à la création du groupe de publicités, de l'ensemble de publicités et de la campagne publicitaire.

Boîte de dialogue Publicités Instant Experience

Vous pouvez utiliser la boîte de dialogue Publicités Instant Experience pour fournir les interfaces de création de publicités Instant Experience Facebook sur votre site web. Pour en savoir plus sur le composant d’UI, consultez la section Boîtes de dialogue.

Pour configurer le SDK Facebook pour JavaScript, consultez les pages :

Le SDK JavaScript s’appuie sur les autorisations de l’utilisateur·ice connecté·e pour créer une publicité Instant Experience. Si l’utilisateur·ice ne dispose pas des autorisations nécessaires à la création d’une Instant Experience pour la page et l’entreprise spécifiées, la boîte de dialogue affiche une erreur. Pour garantir l’absence d’erreurs, l’utilisateur·ice doit travailler dans l’entreprise et disposer d’autorisations relatives à la création de publicités pour la page.

Déclenchez ensuite la boîte de dialogue :

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_builder',
  business_id: '<BUSINESS_ID>',
  page_id: '<PAGE_ID>'
}, function(response) {
  // callback
});

Vous pouvez fournir les paramètres suivants pour le plugin :

NomObligatoireDescription

display

Oui

Paramètre obligatoire avec une valeur définie de popup

method

Oui

Paramètre obligatoire avec une valeur définie de instant_experiences_builder

business_id

Oui

Votre ID d’entreprise

page_id

Oui

ID de page auquel vous souhaitez associer l’Instant Experience

canvas_id

Non

ID de la publicité Instant Experience que vous souhaitez modifier

Facultatif, le paramètre canvas_id permet à l’utilisateur·ice de modifier ou d’afficher un aperçu d’une publicité Instant Experience existante. Si une Instant Experience est terminée, vous ne pouvez pas la modifier. Pour afficher l’aperçu d’une Instant Experience, nous vous recommandons d’utiliser la boîte de dialogue Aperçu des publicités Instant Experience.

Le plugin indique cette réponse si l’opération réussit :

{
  "success": true,
  "id": "CANVAS-ID"
}

L’ID renvoyé correspond à une Instant Experience publiée. Vous pouvez désormais l’utiliser dans vos campagnes publicitaires. Si aucune réponse ou une réponse undefined est renvoyée, cela signifie que l’utilisateur·ice a fermé la boîte de dialogue avant de terminer la publicité Instant Experience. L’utilisateur·ice a peut-être enregistré la publicité Instant Experience, mais ne l’a pas terminée. Vous pouvez extraire toutes les Instant Experiences qui appartiennent à une page via l’API Graph pour vérifier s’il reste des publicités non terminées.

Afficher l’aperçu d’une Instant Experience

API d’aperçu iframe

Vous pouvez générer un aperçu d’une Instant Experience à l’aide de l’API d’aperçu qui renvoie une iframe à l’instar de l’API d’aperçu de la publicité :

curl -X GET \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v18.0/<CANVAS_ID>/preview

Voici un exemple de ce que renvoie l’API. Pour le voir, intégrez l’élément iframe renvoyé dans le code HTML :

{
"data": [
    {
      "body": "<iframe src=\"https://www.facebook.com/ads/canvas/preview?d=AQKELApdJxoVp2f3PHl8-pRtYuAh4-_eDupMDbh-pS9zde_EFxckhYQCXu7NYUi4PhhBA7uskIo2Ys3IjIVNGZiS&t=AQKGOPqGI-NWcv1YKbA\" width=\"405\" height=\"720\" scrolling=\"yes\" style=\"border: none;\"></iframe>"
    }
  ],
  "__www_request_id__": "AQnyr47Qp2r5M-ISqSiMgrw"
}

SDK Facebook

Vous pouvez utiliser cette boîte de dialogue pour afficher un aperçu d’une Instant Experience comme un utilisateur ou une utilisatrice de Facebook la verrait depuis votre site web. Pour en savoir plus sur ce composant d’interface, consultez la page Boîtes de dialogue.

Pour configurer le SDK Facebook pour JavaScript, consultez les pages :

Le SDK JavaScript s’appuie sur les autorisations de l’utilisateur·ice connecté·e pour créer une publicité Instant Experience. Si l’utilisateur·ice ne dispose pas des autorisations nécessaires à l’affichage de la publicité Instant Experience, la boîte de dialogue affiche une erreur.

Déclenchez ensuite la boîte de dialogue d’aperçu :

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_preview',
  canvas_id: 'CANVAS-ID'
});

Vous pouvez fournir les paramètres suivants pour le plugin :

NomObligatoireDescription

display

Oui

Paramètre obligatoire avec une valeur définie de popup

method

Oui

Paramètre obligatoire avec une valeur définie de instant_experiences_preview

canvas_id

Oui

ID de l’Instant Experience dont vous souhaitez afficher un aperçu

Créer des audiences pour les Instant Experience

Pour créer une audience d'engagement, une audience de personnes qui se sont engagées avec une Instant Experience, définissez le paramètre object_id du champ rule sur l'identifiant de l'Instant Experience (CANVAS-ID) dans votre appel POST /act_AD-ACCOUNT/customaudiences.

Personnes ayant ouvert l’Instant Experience

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who opened this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_document_open"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

Personnes qui ont cliqué sur un lien dans la publicité Instant Experience

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who clicked any links in this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_element_click"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

Pour en savoir plus sur les audiences personnalisées, consultez la page Audience personnalisée : documentation de référence.

Publicités Instant Experience et Instagram

L’implémentation des publicités Instant Experience avec Instagram utilise les mêmes appels d’API que ceux utilisés pour les publicités Instant Experience sur Facebook. Notez que des restrictions s’appliquent lorsque vous utilisez des publicités Instagram et Instant Experience :

  • Placements : disponibles pour le fil Instagram et Instagram Stories. Si vous sélectionnez Instagram Stories, vous devez les sélectionner en tant que placements publicitaires exclusifs.
  • Éléments de la publicité Expérience instantanée : prennent entièrement en charge les en-têtes et les ensembles de produits.

Nous prenons partiellement en charge les éléments de publicité Instant Experience suivants sur Instagram :

  • Pied de page : aucun swipe to open dans la clientèle, se présente en tant que Tap to open.
  • Carrousel : aucune photo qui renvoie vers une autre publicité Instant Experience. S’affiche sous forme de lien non cliquable dans le client. Pour les photos et les vidéos, aucune option Adapter à la hauteur, Adapter à la largeur ou Incliner pour afficher un panorama. L’option « Adapter à la largeur » s’affiche.
  • Bouton : ne peut pas renvoyer vers une autre publicité Instant Experience ni vers l'App Store.
  • Texte : aucune prise en charge du langage RTL.
  • Vidéo : aucune vidéo 360.
  • Cartes des boutiques : non prises en charge.

Insights publicitaires

Consultez la section Insights publicitaires pour obtenir une vue d’ensemble et les descriptions des indicateurs disponibles.

Voir aussi