Create an "Add to Calendar" Link

An "Add to Calendar" link will allow your PURL visitors to automatically add an event to their calendar.  The cool part is, that this event can change based off the PURL visitor's input!  Here is how you can pull this off...

1. Add a Page

The first step is to add a new page to your campaign. This will serve as the page that will download the calendar (ics) file. You can name this page something like "Download Event"

2. Submit to Thank You Page

When you created the new Download Event page, the Welcome page will be updated to submit to the that new page.  We'll want to update the Welcome page to submit to the "Thank You" page.  You can do that under the Form tab > Go To Dropdown.

3. Add Link to the Thank You page

You should create a new link on the Thank You page that goes to the Download Event page.  To do that, select the Link dropdown in the content editor. 

4. Add the Calendar Script

You will now want to add the calendar script below to the landing page (index.php) file.  This is the file stored on your server that you can access via FTP. If your using instantPurl, you can request FTP access.

Check out this video for a brief walkthrough for what this code all means.

<?php
if($_GET['page'] == 2) { 
$summary = 'Appt with ABC Corp'; //The name of the event
$location = '123 Main Street'; //The location of the event
$filename = 'event.ics'; //the name of this file for saving (e.g. my-event-name.ics) 
$day = explode('/',$visitor->customfield_XXXX); //This should be replaced with your custom field ID for the date
$time = $visitor->customfield_XXXX; //This should be replaced with your custom field ID for the time 
//Calculate the start/end time for the event
$timestamp = $day[2].'-'.$day[0].'-'.$day[1];
if(strstr($time,'AM')) {
$time = str_replace(' AM','',$time);
} else {
$time = str_replace(' PM','',$time);
$time = explode(':',$time); 
$time[0] = $time[0]+12;
$time = $time[0].':'.$time[1];}
$timestamp = $timestamp.' '.$time;
$start = $timestamp;
$end = date('Y-m-d H:i', strtotime($timestamp.' + 1 hours')); 
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $filename);
function dateToCal($timestamp) {
return date('Ymd\THi', $timestamp);}?>
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
VERSION:2.0
METHOD:PUBLISH
PRODID:-//hacksw/handcal//NONSGML v1.0//EN BEGIN:VEVENT
UID:<?= uniqid() ?>
DTEND;TZID=America/New_York:<?= dateToCal(strtotime($end)); ?>00
SUMMARY:<?= $summary; ?> 
DTSTART;TZID=America/New_York:<?= dateToCal(strtotime($start)); ?>00
DTSTAMP:20131016T210836Z
LOCATION:<?= $location; ?> 
END:VEVENT
END:VCALENDAR
<?php}

?>