Salesforce Marketing Cloud Preference Center:AMPScriptとクラウドページの例

AMPscriptSalesforce-統合マーケティングクラウド設定ページコード

実話…XNUMX年以上前、ExactTarget(現在のSalesforce Marketing Cloud)の統合コンサルタントとしてのポジションを開始したとき、私のキャリアは本当に軌道に乗りました。 私の仕事は世界中の企業がプラットフォームとの深い統合を開発するのを支援することになり、プラットフォームに関する多くの制度的知識を蓄積したため、プロダクトマネージャーに昇進しました。

以前は開発者が所有していた組織のプロダクトマネージャーの課題により、最終的に私は先に進みました。 それは素晴らしい組織でしたが、私は本当に決して 所有している 製品。 そのため、サポート、販売、製品マーケティングの同僚が私に本当の変化をもたらすように頼みましたが、実際には、開発チームは別のソリューションを実装することが多く、リリースの数日前に見つけました。

私の最後のプロジェクトのXNUMXつは、顧客が電子メールにスクリプトを追加できるようにする内部スクリプトプラットフォームに取り組んでいました。 私は別のプロダクトマネージャーと協力し、多くの調査を行いました。最終的には、独自の関数を使用してJQueryスタイルのアプローチを開発することを決定しましたが、配列を渡したり消費したり、JSONを利用したりする機能も含まれていました。解決策…開発に至るまで。 製品サイクルの早い段階で、私のライブラリは廃棄され、上級開発者がそれに置き換えました AMPscript.

数年後、 Salesforceパートナー 私がパートナーである会社は現在、複雑なエンタープライズ統合を行っており、メールコンテンツロジックの強化またはクラウドページの展開のいずれかで、日常的にAMPscriptに夢中になっています。 もちろん、AMPscriptを使って日々仕事をしていることへの欲求不満は、当時間違った決定が下されたことを私に保証します…私の解決策ははるかにエレガントだったでしょう。 BASICでTRS-80のプログラミングに戻ったような気がします。

クラウドページに使用するエディターは寛容ではありません。 コードでの変数の宣言や構文エラーなどの単純な問題は検出されません。 実際、500サーバーエラーを生成するだけのページを実際に公開できます。 ページにはXNUMXつの名前付けフィールドもあります…理由は聞かないでください。

プロのヒント: 公開しようとしているときにCloudPagesがサンプルデータを返さず、永久に処理されているように見える場合は、エラーがスローされます。 とにかく公開する場合は、おそらくクラウドページを完全に削除して最初からやり直す必要があります。 私の推測では、それが構築されているインフラストラクチャは、コードの変更を識別するのに十分なインテリジェントではなく、キャッシュされたコードを処理し続けるだけです。

それとは別に、文書化されたコードサンプルの多くに独自の構文エラーがあることを知ってうれしいでしょう。 わーい! それは恐ろしい経験です…しかし、それは驚くべき柔軟性を提供するので、それでも使用することができ、使用する必要があります。

サイドノート: 新しいクラウドページがあります 経験…ページのスキンを変更したように見え、追加情報が提供されていない場合。 私は実際、マルチステップの公開シーケンスには古いバージョンの方が好きです。

私の会社が Highbridge 複数のシステムを統合し、データ拡張機能をAMPscript、SSJS、クラウドページ、メールに組み込んだ複雑なAjax対応ソリューションを構築します…AMPscriptを使用してSalesforceインスタンスにクエリを実行し、プルするだけの簡単な例を紹介したいと思います。バックデータ。 この場合、マスターのサブスクライブ解除フラグを保持する単純なブールフィールド。 もちろん、このコードを拡張して、使用できる設定ページまたはプロファイルセンター全体を構築することもできます。

サブスクライバーデータを使用してクラウドページリンクを生成する

クラウドページの詳細を表示すると、メールに含めることができるページの一意のページIDを取得できます。

クラウドページID

構文は次のとおりです。

<a href="%%=RedirectTo(CloudPagesURL(361))=%%">View My Preferences</a>

データ拡張機能を介したクラウドページを介したSalesforceデータのAMPscript

最初のステップは、変数を宣言し、Salesforceからデータを取得してページで使用するAMPscriptを作成することです。 この例では、trueまたはfalseを保持するSalesforceブールフィールドに名前が付けられています オプトアウト:

%%[

/* Declare EVERY variable */
VAR @contactKey,@agent,@referrer,@unsub
VAR @rs,@updateRecord,@checked
 
/* Request your ContactKey from the querystring */
Set @contactKey = Iif(Empty([_subscriberKey]),RequestParameter("contactKey"),[_subscriberKey])

/* Set unsub to false unless it is passed in the querystring */
SET @unsub = Iif(Not Empty(RequestParameter('unsub')),RequestParameter('unsub'),'false')
 
/* If unsub, then update the Salesforce field OptedOut */ 
IF NOT Empty(@unsub) THEN
  SET @updateRecord = UpdateSingleSalesforceObject('contact',@contactKey,'OptedOut', @unsub)
ENDIF

/* Retrieve the Salesforce Contact record */
Set @rs = RetrieveSalesforceObjects('contact', 'FirstName,LastName,OptedOut', 'Id', '=', @contactKey);
 
/* Get the fields from the record */
 IF RowCount(@rs) == 1 then
  var @record, @firstName, @lastName, @optout
  set @record = Row(@rs, 1)
  set @firstName = Field(@record, "FirstName")
  set @lastName = Field(@record, "LastName")
  set @optout = Field(@record, "OptedOut")
ENDIF

/* Build a string for your checkbox to be checked or not
 set @checked = '';
 IF (@optout == 'true') THEN
  set @checked = 'checked'
 ENDIF
 
]%%

これで、リクエストを処理するHTMLとフォームを作成できます。

<!DOCTYPE html>
<html>
   <title>Profile Center</title>
   <body>
      <h2>Your Profile:</h2>
      %%[ if RowCount(@rs) == 1 then ]%%
      <ul>
         <li><strong>First Name:</strong> %%=v(@firstName)=%%</li>
         <li><strong>Last Name:</strong> %%=v(@lastName)=%%</li>
         <li><strong>Unsubcribed:</strong> %%=v(@optout)=%%</li>
      </ul>
      <form method="get">
       <div>
         <input type="hidden" id="contactKey" name="contactKey" value="%%=v(@contactKey)=%%">
         <input type="checkbox" id="unsub" name="masterUnsub" value="true" %%=v(@checked)=%%>
         <label for="masterUnsub">Unsubscribe From All</label>
        </div>
       <div>
         <button type="submit">Update</button>
        </div>
     </form>
      %%[ else ]%%
      <p>You don't have a record.</p>
      %%[ endif ]%%
   </body>
</html>

以上です…すべてをまとめると、サブスクライバーレコードで更新され、Salesforceのブールフィールド(true / false)を更新するリクエストを渡す設定ページが表示されます。 これで、そのフィールドを中心にカスタムクエリを作成して、オプトアウトされている連絡先にメールが送信されないようにすることができます。

設定ページまたはプロファイルセンターを強化する方法

もちろん、これは設定ページで可能なことのティーザーにすぎません。 あなたが考えたいと思うかもしれない機能強化:

  • 別のデータ拡張機能から実際のテキストを入力して、マーケティングチームがコードに触れることなく、いつでもページのコンテンツを更新できるようにします。
  • パブリケーションリストのデータ拡張機能にデータを入力し、パブリケーションをループして、マスターのサブスクライブ解除に加えて、プリファレンスのオプトインまたはオプトアウトを提供します。
  • 理由データ拡張を入力して、サブスクライバーがマスターサブスクリプションを解除している理由をキャプチャします。
  • Salesforceレコードから他のプロファイル情報を入力して、追加のプロファイル情報を提供します。
  • ページをAjaxで処理して、シームレスにデータを入力できるようにします。
  • ユーザーがいつでも個人プロファイルセンターにアクセスできるように、登録手段を提供します。

AMPscriptの追加リソース

AMPscriptの学習と展開について追加の支援が必要な場合は、次の優れたリソースをご覧ください。

  • AMPscriptガイドe –一部のSalesforce従業員によって編成された、これはAMPscript構文のかなり完全なデータベースですが、例は非常に軽いものです。 それがより堅牢であれば、投資する価値があるかもしれません。
  • Trailhead AMPscript – SalesforceのTrailheadは無料の学習リソースであり、AMPscriptとSSJSの両方を使用した言語の基本と、このXNUMXつがどのように相互作用するかについて説明します。
  • SalesforceのStackExchange –大量のAMPscriptコードサンプルの支援を要求するための優れたオンラインコミュニティ。

クラウドページをSalesforceと統合して、優れたユーザーエクスペリエンスを提供する機会はたくさんあります。 そして、あなたの会社が苦労しているなら、あなたはいつでも私たちに連絡して支援することができます!

Eメール Highbridge

どう思いますか?

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.