Giorgio Gnoli – Consulente CRM e Temporary Manager

SFMC Tips #316: Personalizzare le immagini con AMPscript e Data Graph

Con il rilascio delle nuove feature Summer ’26 per le edizioni Growth & Advanced di Marketing Cloud Next, AMPscript è finalmente arrivato.

SFMC Tips #280: Marketing Cloud Next: personalizza i messaggi in modo flessibile con AMPscript

Sebbene alcune funzioni importanti non siano ancora disponibili rispetto a Marketing Cloud Engagement, AMPscript supporta le istruzioni IF (logica condizionale), rendendo possibile creare esperienze simili al Dynamic Content utilizzando AMPscript.

Istruzioni IF

Un’istruzione IF è una logica condizionale utilizzata per modificare il contenuto visualizzato in base a condizioni specifiche.

Ad esempio, nell’esempio seguente, alla variabile @test viene assegnato il valore fisso “True”, e il contenuto visualizzato cambia in base a quel valore.

%%[
SET @test = "True" 
IF @test == "True" THEN
]%%

Condizione soddisfatta!

%%[ELSE]%%

Condizione non soddisfatta.

%%[ENDIF]%%

In questo esempio, “True” è scritto come valore fisso (hardcoded), quindi viene sempre mostrato “Condizione soddisfatta!”. I valori tra virgolette (” “) sono trattati come stringhe fisse.

Importante: Se inserisci un blocco AMPscript all’interno di un componente Paragraph nel Visual Editor, si verifica un errore e diventa impossibile inviare o visualizzare in anteprima. Assicurati di inserire AMPscript all’interno di un componente HTML.

Nelle implementazioni reali, utilizzerai valori provenienti da un Data Graph o da Content Variables invece di valori fissi.

Ad esempio, con un Data Graph:

SET @test = $dataGraph.Favorite_Genre__c

Oppure con una Content Variable:

SET @test = $content.Favorite_Genre

Recuperando valori dinamici in questo modo, puoi mostrare contenuti diversi per ciascun cliente.

Codice di esempio

In questo esempio, le immagini vengono visualizzate dinamicamente in base al valore del campo Favorite Genre nel Data Graph.

I possibili valori per Favorite Genre sono:

  • Rock
  • Jazz
  • Pop
  • Classical
%%[IF $dataGraph.Favorite_Genre__c == "Rock" THEN]%%

<div>
    <img alt="Rock"
         src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCEHNOMYTGGBDAXCHLSRMCVCGNEY?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
         style="width:100%;display:block;"
         width="568">
</div>

%%[ELSEIF $dataGraph.Favorite_Genre__c == "Jazz" THEN]%%

<div>
    <img alt="Jazz"
         src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCP4LDVOJKOVFJBIC4QIZC52Z4YY?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
         style="width:100%;display:block;"
         width="568">
</div>

%%[ELSEIF $dataGraph.Favorite_Genre__c == "Pop" THEN]%%

<div>
    <img alt="Pop"
         src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCBFUZ5WF34FBMVHBHCXPGTCBUG4?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
         style="width:100%;display:block;"
         width="568">
</div>

%%[ELSEIF $dataGraph.Favorite_Genre__c == "Classical" THEN]%%

<div>
    <img alt="Classical"
         src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCRGSXERQVOBFRHOEZVV5TAD4QQY?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
         style="width:100%;display:block;"
         width="568">
</div>

%%[ELSE]%%

<div>
    <img alt="Other"
         src="https://nac-plus.cdn.salesforce-experience.com/cms/delivery/media/MCKI6HMM4EZZC2REX4HAEVJSREMU?channelId=0apgC000000BcYE&oid=00DgC0000024nxA"
         style="width:100%;display:block;"
         width="568">
</div>

%%[ENDIF]%%

Note

  • Ogni tag immagine deve essere racchiuso in un elemento <div>.
  • Per istruzioni su come ottenere l’URL di un’immagine caricata nel CMS, consulta questo articolo.

A questo punto, alcuni di voi potrebbero chiedersi: “Non è possibile utilizzare le funzioni Content Block all’interno dell’istruzione IF?

Secondo la documentazione di riferimento di AMPscript, le seguenti funzioni sembrerebbero disponibili:

  • ContentBlockById() — Recupera un content block tramite ID
  • ContentBlockByKey() — Recupera un content block tramite Key
  • ContentBlockByName() — Recupera un content block tramite Name

Tuttavia, in base alle mie verifiche, queste funzioni non sono attualmente utilizzabili.

Il motivo è che quando AMPscript viene inserito nel Visual Editor, viene automaticamente convertito nel seguente formato Handlebars nella Code View:

  • ContentBlockById() ⇒ getContentBlockByContentKey
  • ContentBlockByKey() ⇒ getContentBlockByContentKey
  • ContentBlockByName() ⇒ getContentBlockByApiName

Tuttavia, queste funzioni Handlebars attualmente non esistono e non risultano supportate. Potrebbero diventare disponibili in futuro, ma per il momento generano un errore interno.

Attualmente, l’unica funzione Handlebars disponibile relativa ai contenuti è:

getContentBlock

*Tieni presente che Handlebars distingue tra maiuscole e minuscole (case-sensitive).

Di conseguenza, qualcuno potrebbe pensare che invece di:

%%=ContentBlockByKey("MCMQ7DESJCTNCTHGD63VCEILTLQI")=%%

si possa semplicemente usare:

{{getContentBlock key="MCMQ7DESJCTNCTHGD63VCEILTLQI"}}

Questo è solo parzialmente corretto.

La sintassi funziona effettivamente. Tuttavia, questa funzione può restituire solo contenuto testuale. Immagini e tag HTML non vengono restituiti.

Pertanto, al momento attuale, non credo sia possibile utilizzare content block referenziati all’interno di istruzioni IF per contenuti immagine dinamici.

Ecco perché nell’esempio riportato sopra vengono utilizzati direttamente i tag <img>.

Ho anche verificato che modificando l’audience target vengono effettivamente mostrate immagini diverse.

Conclusione

A mio parere, uno dei miglioramenti più significativi della Summer ’26 è che attività precedentemente richiedevano il Code Editor possono ora essere svolte direttamente all’interno del Visual Editor. Si tratta di un aggiornamento molto più rilevante di quanto potrebbe apparire a prima vista.

Inoltre, la possibilità di combinare AMPscript e Handlebars offre una notevole flessibilità.

Un altro punto importante da comprendere è che in Marketing Cloud Next, il codice AMPscript viene internamente convertito in Handlebars prima di essere elaborato.

Di conseguenza, anche se una funzionalità è indicata come supportata nella sintassi AMPscript, non può essere utilizzata se la funzionalità corrispondente non è supportata sul lato Handlebars.

Per le tre funzioni relative ai content block referenziati discusse in questo articolo:

  • ContentBlockById() — Recupera un content block tramite ID
  • ContentBlockByKey() — Recupera un content block tramite Key
  • ContentBlockByName() — Recupera un content block tramite Name

è stato dichiarato esplicitamente che il supporto è previsto in futuro.

Una volta disponibili, dovrebbero consentire una gestione dei contenuti e una logica condizionale più flessibili — sempre che venga aggiunto anche il supporto alle immagini.

Quando ciò accadrà, condividerò i risultati aggiornati dei test.

È tutto per questo articolo.

Continuate a seguirci per altri consigli su Salesforce Marketing Cloud! 😎

Nobuyuki Watanabe

https://www.linkedin.com/in/nobuyuki-watanabe/ (+Follow me)


Tradotto e adattato da SFMC Tips #316 : Marketing Cloud Next: Personalize Images Using AMPscript and Data Graphs di Nobuyuki Watanabe (@marketingcloudtips), pubblicato su Medium. Traduzione autorizzata dall’autore.

Torna in alto