Created
January 15, 2020 08:46
-
-
Save zuzannamj/ff92706f9ab4882a48b748d267dec22b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!--–– Copyright © 2020 Zuzanna Jarczynska http://sfmarketing.cloud ––--> | |
<script runat="server"> | |
Platform.Load("Core","1.1.1"); | |
try{ | |
</script> | |
%%[ | |
SET @contactId = _subscriberkey | |
IF NOT EMPTY(@contactId) THEN | |
/* fetch data from Sales Cloud to show in the form */ | |
SET @subscriberRows = RetrieveSalesforceObjects( | |
"Contact", | |
"Id,FirstName,LastName,Email,Newsletter__c,Events__c,Offers__c,HasOptedOutOfEmail", | |
"Id", "=", @contactId | |
) | |
IF RowCount(@subscriberRows) > 0 THEN | |
SET @row = row(@subscriberRows,1) | |
SET @FirstName = field(@row,"FirstName") | |
SET @LastName = field(@row,"LastName") | |
SET @Email = field(@row,"Email") | |
SET @Newsletter = field(@row,"Newsletter__c") | |
SET @Events = field(@row,"Events__c") | |
SET @Offers = field(@row,"Offers__c") | |
SET @HasOptedOutOfEmail = field(@row,"HasOptedOutOfEmail") | |
IF @Newsletter == true THEN SET @Newsletterchk = "checked" ENDIF | |
IF @Events == true THEN SET @Eventschk = "checked" ENDIF | |
IF @Offers == true THEN SET @Offerschk = "checked" ENDIF | |
ELSE | |
]%% | |
Sorry, something went wrong (no records found). | |
%%[ | |
ENDIF | |
ELSE | |
]%% | |
Sorry, something went wrong (missing subscriber key). | |
%%[ | |
ENDIF | |
IF RequestParameter("submitted") == true AND RequestParameter("unsub") == true THEN | |
/* update contact in Sales Cloud */ | |
SET @updateRecord = UpdateSingleSalesforceObject( | |
"Contact", @contactId, | |
"Newsletter__c", "false", | |
"Events__c", "false", | |
"Offers__c", "false", | |
"HasOptedOutOfEmail", "true" | |
) | |
/* log unsubscribe event to mark as unsubscribed in All Subscribers */ | |
SET @reason = "Unsubscribed through custom subscription center" | |
SET @lue = CreateObject("ExecuteRequest") | |
SETObjectProperty(@lue,"Name","LogUnsubEvent") | |
SET @lue_prop = CreateObject("APIProperty") | |
SETObjectProperty(@lue_prop, "Name", "SubscriberKey") | |
SETObjectProperty(@lue_prop, "Value", @contactId) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
SET @lue_prop = CreateObject("APIProperty") | |
SETObjectProperty(@lue_prop, "Name", "Reason") | |
SETObjectProperty(@lue_prop, "Value", @reason) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
SET @lue_statusCode = InvokeExecute(@lue, @overallStatus, @requestId) | |
ELSEIF RequestParameter("submitted") == true AND RequestParameter("sub") == true THEN | |
/* update contact in Sales Cloud */ | |
SET @updateRecord = UpdateSingleSalesforceObject( | |
"Contact", @contactId, | |
"FirstName", RequestParameter("firstname"), | |
"LastName", RequestParameter("lastname"), | |
"Email", RequestParameter("email"), | |
"Newsletter__c", "true", | |
"Events__c", "true", | |
"Offers__c", "true", | |
"HasOptedOutOfEmail", "false" | |
) | |
/* set subscriber status to active in All Subscribers */ | |
SET @email = RequestParameter("email") | |
SET @Subscriber = CreateObject("Subscriber") | |
SetObjectProperty(@Subscriber, "SubscriberKey", @contactId) | |
SetObjectProperty(@Subscriber, "EmailAddress", @email) | |
SetObjectProperty(@Subscriber, "Status", "Active" ) | |
SET @Status = InvokeUpdate(@Subscriber, @createErrDesc, @createErrNo, @createOpts) | |
/* fetch updated data to show in the form */ | |
SET @subscriberRows = RetrieveSalesforceObjects( | |
"Contact", | |
"Id,FirstName,LastName,Email,Newsletter__c,Events__c,Offers__c,HasOptedOutOfEmail", | |
"Id", "=", @contactId | |
) | |
SET @row = row(@subscriberRows,1) | |
SET @FirstName = field(@row,"FirstName") | |
SET @LastName = field(@row,"LastName") | |
SET @Email = field(@row,"Email") | |
SET @Newsletter = field(@row,"Newsletter__c") | |
SET @Events = field(@row,"Events__c") | |
SET @Offers = field(@row,"Offers__c") | |
SET @HasOptedOutOfEmail = field(@row,"HasOptedOutOfEmail") | |
IF @Newsletter == true THEN SET @Newsletterchk = "checked" ENDIF | |
IF @Events == true THEN SET @Eventschk = "checked" ENDIF | |
IF @Offers == true THEN SET @Offerschk = "checked" ENDIF | |
ELSEIF RequestParameter("submitted") == true THEN | |
/* update contact */ | |
SET @updateRecord = UpdateSingleSalesforceObject( | |
"Contact", @contactId, | |
"FirstName", RequestParameter("firstname"), | |
"LastName", RequestParameter("lastname"), | |
"Email", RequestParameter("email"), | |
"Newsletter__c", Iif(RequestParameter("newsletter") == "on", "true", "false"), | |
"Events__c", Iif(RequestParameter("events") == "on", "true", "false"), | |
"Offers__c", Iif(RequestParameter("offers") == "on", "true", "false") | |
) | |
/* update email in All Subscribers list */ | |
IF RequestParameter("email") != AttributeValue("emailaddr") THEN | |
SET @email = RequestParameter("email") | |
SET @Subscriber = CreateObject("Subscriber") | |
SetObjectProperty(@Subscriber, "SubscriberKey", @contactId) | |
SetObjectProperty(@Subscriber, "EmailAddress", @email) | |
SET @Status = InvokeUpdate(@Subscriber, @createErrDesc, @createErrNo, @createOpts) | |
ENDIF | |
ENDIF | |
IF @HasOptedOutOfEmail == true THEN | |
]%% | |
<h2>Update your profile:</h2> | |
<form action="%%=RequestParameter('PAGEURL')=%%" method="post"> | |
<label>First name: </label><input type="text" name="firstname" value="%%=v(@FirstName)=%%"><br> | |
<label>Last name: </label><input type="text" name="lastname" value="%%=v(@LastName)=%%"><br> | |
<label>Email: </label><input type="text" name="email" value="%%=v(@Email)=%%"><br> | |
<h2>Resubscribe</h2> | |
You have unsubscribed from ALL publications from <i>%%member_busname%%</i>. If you wish to resubscribe, click the Resubscribe button below. | |
<input name="submitted" type="hidden" value="true"><br> | |
<input name="sub" type="hidden" value="true"><br><br> | |
<input type="submit" value="Resubscribe"> | |
</form> | |
%%[ELSEIF RequestParameter("submitted") == false AND NOT EMPTY(@contactId) AND RowCount(@subscriberRows) > 0 THEN]%% | |
<h2>Update your profile:</h2> | |
<form action="%%=RequestParameter('PAGEURL')=%%" method="post"> | |
<label>First name: </label><input type="text" name="firstname" value="%%=v(@FirstName)=%%"><br> | |
<label>Last name: </label><input type="text" name="lastname" value="%%=v(@LastName)=%%"><br> | |
<label>Email: </label><input type="text" name="email" value="%%=v(@Email)=%%"><br> | |
<h2>Update your subscriptions:</h2> | |
<label>Newsletter: </label><input name="newsletter" type="checkbox" %%=v(@Newsletterchk)=%%><br> | |
<label>Events: </label><input name="events" type="checkbox" %%=v(@Eventschk)=%%><br> | |
<label>Offers: </label><input name="offers" type="checkbox" %%=v(@Offerschk)=%%><br> | |
<input name="submitted" type="hidden" value="true"><br> | |
<input type="submit" value="Submit"></form> | |
<br><br> | |
<h2>Unsubscribe From All</h2> | |
If you wish to unsubscribe from ALL publications from <i>%%member_busname%%</i>, click the Unsubscribe From All button below. | |
<form action="%%=RequestParameter('PAGEURL')=%%" method="post"> | |
<input name="submitted" type="hidden" value="true"> | |
<input name="unsub" type="hidden" value="true"><br> | |
<input type="submit" value="Unsubscribe From All"></form> | |
%%[ELSEIF RequestParameter("submitted") == true AND NOT EMPTY(@contactId) THEN]%% | |
<h2>Your profile has been updated.</h2> | |
Go back to your profile.<br> | |
<form action="%%=RequestParameter('PAGEURL')=%%" method="post"> | |
<br> | |
<input type="submit" value="Go Back"></form> | |
%%[ENDIF]%% | |
<script runat="server"> | |
}catch(e){ | |
Write("Sorry, something went wrong: " + Stringify(e.message)); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment