Created
June 24, 2019 22:36
-
-
Save ejangi/7c25376c7a1352e661b36dfa3ac3c8b4 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
%%[ | |
var @debug | |
var @jid | |
var @listid | |
var @batchid | |
var @email | |
var @skey | |
var @reason | |
var @unsubscribeAll | |
var @Status | |
var @lue | |
var @lue_prop | |
var @lue_statusCode | |
var @overallStatus | |
var @requestId | |
var @Response | |
var @Error | |
set @debug = 0 | |
set @reason = "One-Click Unsubscribe" | |
set @unsubscribeAll = QueryParameter("ua") | |
set @jid = AttributeValue("jobid") | |
set @listid = AttributeValue("listid") | |
set @batchid = AttributeValue("_JobSubscriberBatchID") | |
set @email = AttributeValue("emailaddr") | |
set @skey = AttributeValue("_subscriberkey") | |
/* if we know the subscriber */ | |
if not empty(@skey) then | |
/* if unsubscribing from all, then set the job, batch and listids to blank, effectively doing a global unsub */ | |
if @unsubscribeAll == "1" then | |
set @jid = "" | |
set @listid = "" | |
set @batchid = "" | |
endif | |
/* create a request to inject an unsub event into the LogUnsubEvent platform table */ | |
set @lue = CreateObject("ExecuteRequest") | |
SetObjectProperty(@lue,"Name","LogUnsubEvent") | |
/* | |
In order to invoke the request, we need to associate the following information with it to define the subscriber context and the job context: | |
1. Subscriber Key | |
2. JobId associated with the email send | |
3. ListID the email was sent to | |
4. BatchID the email was sent to | |
5. Reason for the unsub | |
*/ | |
/* 1. define and associate Subscriber Key to the request */ | |
set @lue_prop = CreateObject("APIProperty") | |
SetObjectProperty(@lue_prop, "Name", "SubscriberKey") | |
SetObjectProperty(@lue_prop, "Value", @skey) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
/* 2. define and associate JobID to the request */ | |
if not empty(@jid) then | |
set @lue_prop = CreateObject("APIProperty") | |
SetObjectProperty(@lue_prop, "Name", "JobID") | |
SetObjectProperty(@lue_prop, "Value", @jid) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
endif | |
/* 3. define and associate ListID to the request */ | |
if not empty(@listid) then | |
set @lue_prop = CreateObject("APIProperty") | |
SetObjectProperty(@lue_prop, "Name", "ListID") | |
SetObjectProperty(@lue_prop, "Value", @listid) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
endif | |
/* 4. define and associate BatchID to the request */ | |
if not empty(@batchid) then | |
set @lue_prop = CreateObject("APIProperty") | |
SetObjectProperty(@lue_prop, "Name", "BatchID") | |
SetObjectProperty(@lue_prop, "Value", @batchid) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
endif | |
/* 5. define and associate unsub reason to the request */ | |
set @lue_prop = CreateObject("APIProperty") | |
SetObjectProperty(@lue_prop, "Name", "Reason") | |
SetObjectProperty(@lue_prop, "Value", @reason) | |
AddObjectArrayItem(@lue, "Parameters", @lue_prop) | |
/* finally, you invoke the request */ | |
set @lue_statusCode = InvokeExecute(@lue, @overallStatus, @requestId) | |
/* extract messages from the response */ | |
set @Response = Row(@lue_statusCode, 1) | |
set @Status = Field(@Response,"StatusMessage") | |
set @Error = Field(@Response,"ErrorCode") | |
if @Status == 'Event posted' or @Status == 'Subscriber is already unsubscribed' then | |
set @Status = 'OK' | |
endif | |
else | |
set @Status = 'NOKEY' | |
endif | |
if @debug == 1 then | |
ouput('<!--') | |
output(concat("<br>jid: ", @jid)) | |
output(concat("<br>listid: ", @listid)) | |
output(concat("<br>batchid: ", @batchid)) | |
output(concat("<br>email: ", @email)) | |
output(concat("<br>skey: ", @skey)) | |
output(concat("<br>reason: ", @reason)) | |
output(concat("<br>unsubscribeAll: ", @unsubscribeAll)) | |
output(concat("<br>overallStatus: ", @overallStatus)) | |
output(concat("<br>requestId: ", @requestId)) | |
output(concat("<br>Response: ", @Response)) | |
output(concat("<br>Status: ", @Status)) | |
output(concat("<br>Error: ", @Error)) | |
output('-->') | |
endif | |
/* | |
%%[ if @Status == 'OK' then ]%%<h1> | |
You have been unsubscribed</h1><p> | |
If you would like to manage your other subscriptions, please use our <a alias="" conversion="false" data-linkto="cloudpageslandingpage" href="%%=CloudPagesURL(124)=%%" style="color:#F69638;text-decoration:underline;" title="">subscription centre</a>.</p> %%[ else ]%%<h1> | |
There was a problem unsubscribing you</h1><p> | |
Unfortunately, we were unable to unsubscribe you from this list.</p><p> | |
Please use the <a alias="" conversion="false" data-linkto="cloudpageslandingpage" href="%%=CloudPagesURL(124)=%%" style="color:#F69638;text-decoration:underline;" title="">subscription centre</a> to update your preferences.</p> %%[ endif ]%% | |
*/ | |
]%% |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment