Salesforce Marketing Cloud Preference Center: ตัวอย่าง AMPScript และ Cloud Page

AMPscript Salesforce-Integrated Marketing Cloud Preference Page Code

เรื่องจริง…อาชีพของฉันเริ่มต้นขึ้นเมื่อสิบกว่าปีที่แล้วเมื่อฉันเริ่มทำงานในตำแหน่งที่ปรึกษาด้านการบูรณาการสำหรับ ExactTarget (ปัจจุบันคือ Salesforce Marketing Cloud) งานของฉันพาฉันไปทั่วโลกเพื่อช่วยเหลือ บริษัท ต่างๆในการพัฒนาการผสานรวมกับแพลตฟอร์มอย่างลึกซึ้งและฉันได้สร้างความรู้เชิงสถาบันมากมายเกี่ยวกับแพลตฟอร์มจนได้รับการเลื่อนตำแหน่งเป็นผู้จัดการผลิตภัณฑ์

ความท้าทายของผู้จัดการผลิตภัณฑ์สำหรับองค์กรที่ก่อนหน้านี้เป็นของนักพัฒนาซอฟต์แวร์ทำให้ฉันก้าวต่อไปได้ในที่สุด มันเป็นองค์กรที่ยอดเยี่ยม แต่ฉันไม่เคยเป็นอย่างแท้จริง เป็นเจ้าของ ผลิตภัณฑ์ ดังนั้นในขณะที่เพื่อนร่วมงานของฉันในการสนับสนุนการขายและการตลาดผลิตภัณฑ์มองหาฉันเพื่อทำการเปลี่ยนแปลงอย่างแท้จริง ... ความจริงก็คือทีมพัฒนามักจะใช้วิธีแก้ปัญหาที่แตกต่างออกไป

หนึ่งในโครงการสุดท้ายของฉันกำลังทำงานบนแพลตฟอร์มสคริปต์ภายในซึ่งจะช่วยให้ลูกค้าของเราสามารถเพิ่มสคริปต์ในอีเมลของพวกเขาได้ ฉันทำงานร่วมกับผู้จัดการผลิตภัณฑ์คนอื่นและเราได้ทำการวิจัยมากมาย ... ในที่สุดก็ตัดสินใจที่จะพัฒนาวิธีการแบบ JQuery ด้วยฟังก์ชันของเราเอง แต่รวมถึงความสามารถในการส่งผ่านและใช้อาร์เรย์ใช้ JSON ฯลฯ มันจะค่อนข้าง วิธีแก้ปัญหา…จนกว่าจะถึงการพัฒนา ในช่วงต้นของวงจรผลิตภัณฑ์ห้องสมุดของฉันถูกยกเลิกและนักพัฒนาอาวุโสได้แทนที่ด้วย AMPscript.

หลายปีต่อมา พันธมิตร Salesforce บริษัท ที่ฉันเป็นพาร์ทเนอร์กำลังดำเนินการผสานรวมองค์กรที่ซับซ้อนและฉันพบว่าตัวเองติดอยู่ใน AMPscript เป็นประจำทุกวันไม่ว่าจะเป็นการปรับปรุงตรรกะของเนื้อหาอีเมลหรือการเปิดตัว Cloud Pages แน่นอนว่าความยุ่งยากในการทำงานในแต่ละวันด้วย AMPscript ทำให้ฉันมั่นใจได้ว่าการตัดสินใจที่ผิดพลาดเกิดขึ้นในสมัยนั้น…วิธีแก้ปัญหาของฉันจะดูดีกว่ามาก ฉันรู้สึกเหมือนกลับไปเขียนโปรแกรม TRS-80 ในภาษาเบสิก

ตัวแก้ไขที่คุณใช้สำหรับ Cloud Pages ไม่น่าให้อภัย ไม่พบปัญหาง่ายๆเช่นการประกาศตัวแปรหรือข้อผิดพลาดทางไวยากรณ์กับโค้ดของคุณ ในความเป็นจริงคุณสามารถเผยแพร่หน้าเว็บที่จะสร้างข้อผิดพลาดเซิร์ฟเวอร์ 500 นอกจากนี้ยังมีฟิลด์การตั้งชื่อสองช่องสำหรับเพจของคุณ ... อย่าถามฉันว่าทำไม

Pro-Tip: หาก Cloud Pages ไม่ส่งคืนข้อมูลตัวอย่างเมื่อคุณกำลังจะเผยแพร่และดูเหมือนว่ากำลังประมวลผลตลอดไป…คุณจะเกิดข้อผิดพลาด หากคุณเผยแพร่ต่อไปคุณอาจจะต้องลบ Cloud Page ทั้งหมดและเริ่มต้นใหม่ ฉันเดาว่าโครงสร้างพื้นฐานที่สร้างขึ้นนั้นไม่ฉลาดพอที่จะระบุการเปลี่ยนแปลงรหัสและเพียงแค่ประมวลผลโค้ดแคชต่อไป

นอกเหนือจากนั้นคุณจะดีใจที่ทราบว่าตัวอย่างโค้ดที่มีเอกสารจำนวนมากมีข้อผิดพลาดทางไวยากรณ์ของตัวเอง เย้! มันเป็นประสบการณ์ที่น่าสยดสยอง… แต่คุณยังสามารถใช้ได้และควรใช้เพราะมันให้ความยืดหยุ่นที่น่าทึ่ง

บันทึกด้านข้าง: มีคลาวด์เพจใหม่ ประสบการณ์…ที่ดูเหมือนว่าพวกเขาเพิ่งสกินเพจใหม่และไม่ได้ให้ข้อมูลเพิ่มเติมใด ๆ จริงๆแล้วฉันชอบเวอร์ชันเก่ามากกว่าสำหรับลำดับการเผยแพร่แบบหลายขั้นตอน

ในขณะที่ บริษัท ของฉัน Highbridge สร้างโซลูชันที่ซับซ้อนและเปิดใช้งาน Ajax ซึ่งรวมระบบต่างๆเข้าด้วยกันและรวมส่วนขยายข้อมูลเข้ากับ AMPscript, SSJS, Cloud Pages และอีเมล ... ฉันต้องการแบ่งปันตัวอย่างง่ายๆว่าคุณสามารถเริ่มต้นได้อย่างไรเพียงแค่ใช้ AMPscript เพื่อสืบค้นอินสแตนซ์ Salesforce ของคุณแล้วดึง ข้อมูลย้อนกลับ ในกรณีนี้ฟิลด์บูลีนธรรมดาที่ยังคงแฟล็กยกเลิกการสมัครหลัก แน่นอนคุณสามารถขยายโค้ดนี้เพื่อสร้างเพจการกำหนดค่าตามความชอบหรือศูนย์โปรไฟล์ทั้งหมดที่คุณสามารถใช้ได้

สร้างลิงค์หน้าคลาวด์พร้อมข้อมูลสมาชิก

หากคุณดูรายละเอียดของ Cloud Page คุณสามารถรับ ID เพจเฉพาะสำหรับเพจที่คุณรวมไว้ในอีเมลได้

รหัสหน้าคลาวด์

ไวยากรณ์เป็นดังนี้:

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

AMPscript สำหรับข้อมูล Salesforce ผ่าน Cloud Pages ผ่านส่วนขยายข้อมูล

ขั้นตอนแรกคือการสร้าง AMPscript เพื่อประกาศตัวแปรและดึงข้อมูลจาก Salesforce มาใช้ในเพจของคุณ ในตัวอย่างนี้ฟิลด์บูลีน 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 ตอนนี้คุณสามารถสร้างแบบสอบถามที่กำหนดเองรอบ ๆ ช่องนั้นได้เสมอเพื่อให้แน่ใจว่าผู้ติดต่อที่เลือกไม่รับจะไม่ส่งอีเมลใด ๆ !

วิธีเพิ่มหน้าการตั้งค่าหรือศูนย์โปรไฟล์ของคุณ

แน่นอนว่านี่เป็นเพียงทีเซอร์ของสิ่งที่เป็นไปได้ในหน้าค่ากำหนด การปรับปรุงที่คุณอาจต้องการนึกถึง:

  • เติมข้อความจริงจากส่วนขยายข้อมูลอื่นเพื่อให้ทีมการตลาดของคุณสามารถอัปเดตเนื้อหาของเพจได้ทุกเมื่อที่ต้องการโดยไม่ต้องแตะโค้ด
  • เติมข้อมูลส่วนขยายข้อมูลรายการสิ่งพิมพ์และวนรอบสิ่งพิมพ์เพื่อเสนอการเลือกใช้หรือเลือกไม่ใช้การกำหนดลักษณะเพิ่มเติมจากการยกเลิกการสมัครหลัก
  • เติมข้อมูลส่วนขยายเหตุผลเพื่อให้ทราบว่าเหตุใดสมาชิกของคุณจึงยกเลิกการสมัครสมาชิกหลัก
  • เติมข้อมูลโปรไฟล์อื่น ๆ จากเรกคอร์ด Salesforce เพื่อให้ข้อมูลโปรไฟล์เพิ่มเติม
  • ประมวลผลเพจด้วย Ajax เพื่อให้คุณสามารถเติมข้อมูลได้อย่างราบรื่น
  • เสนอวิธีการลงทะเบียนเพื่อให้ผู้ใช้ของคุณสามารถเข้าถึงศูนย์โปรไฟล์ส่วนบุคคลได้ตลอดเวลา

แหล่งข้อมูลเพิ่มเติมสำหรับ AMPscript

หากคุณกำลังต้องการความช่วยเหลือเพิ่มเติมสำหรับการเรียนรู้และปรับใช้ AMPscript นี่คือแหล่งข้อมูลที่ดีเยี่ยม:

  • คู่มือ AMPscripte - จัดโดยพนักงาน Salesforce บางคนนี่เป็นฐานข้อมูลไวยากรณ์ AMPscript ที่ค่อนข้างสมบูรณ์แม้ว่าตัวอย่างจะดูเบามาก หากมีประสิทธิภาพมากขึ้นก็อาจคุ้มค่ากับการลงทุน
  • AMPscript ของ Trailhead - Trailhead ของ Salesforce เป็นแหล่งข้อมูลการเรียนรู้ที่ไม่เสียค่าใช้จ่ายและสามารถแนะนำคุณเกี่ยวกับพื้นฐานของภาษาด้วยทั้ง AMPscript, SSJS และวิธีที่ทั้งสองโต้ตอบกันได้
  • Stack Exchange สำหรับ Salesforce - ชุมชนออนไลน์ที่ยอดเยี่ยมสำหรับการขอความช่วยเหลือเกี่ยวกับตัวอย่างโค้ด AMPscript จำนวนมาก

มีโอกาสมากมายในการผสานรวม Cloud Pages กับ Salesforce เพื่อมอบประสบการณ์การใช้งานที่เหนือกว่า และหาก บริษัท ของคุณกำลังประสบปัญหาคุณสามารถติดต่อเราเพื่อช่วยเหลือได้ตลอดเวลา!

ติดต่อเรา Highbridge

คุณคิดอย่างไร?

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.