Introducing Agical.io, the smarter ICS file generator

SanfordWhiteman
Level 10 - Community Moderator

If you've used Marketo's dynamic ICS files (the "Calendar File" token type) you're probably not completely happy with 'em.

About a year ago, I published a (free) microservice that fills in the biggest gaps. With a little more attention on it lately (read: 2 people cared!), I blogged about it.

Read more on TEKNKL :: Blog →

57 REPLIES 57
SanfordWhiteman
Level 10 - Community Moderator

Yep, the key is to remember that the absence of an explicit timezone doesn't mean a timezone isn't silently used as part of the conversion to a date.

That's why you need to explicitly state the tz in both directions. Also, for future reference, make sure to read this: https://blog.teknkl.com/velocity-days-and-weeks/ 

Crystal_Pacheco
Level 4

Hi there,

I would like to have a url in the calendar description. The problem is the URL has UTM codes in there using & , it works perfectly for ics file but not for gcal. Even with %26 or & . It stops the description where the first & appears. I tried for both the beta/alt_sep version and the regular version of the agical link. 

 http://ics.agical.io/beta/alt_sep/?subject=This is a test: Again;description=Click here to attend: https://www.google.com/?utm_source=Overhere&utm_medium=testthis&utm_campaign=44444  You can test https://www.google.com/;dtstart=2019-09-05T15:00:00z;dtend=2019-09-05T16:00:00z;organizer=@this.com;location=Here;format=gcal;preencoded=true
 http://ics.agical.io/beta/alt_sep/?subject=This is a test: Again;description=Click%20here%20to%20attend%3A%20https%3A%2F%2Fwww.google.com%2F%2F15345%2F312187%3Futm_source=Overhere%26utm_medium=testthis%26utm_campaign=44444  You can test https%3A%2F%2Fwww.google.com;dtstart=2019-09-05T15:00:00z;dtend=2019-09-05T16:00:00z;organizer=@this.com;location=Here;format=gcal;preencoded=true

How do I make the & work here?

SanfordWhiteman
Level 10 - Community Moderator

You want

preencoded=false

because indeed you are not pre-URL-encoding the nested URL.

pastedImage_2.png

Please don't use /beta/, though, unless I've specifically mentioned that something is new/fixed in the Beta version only.

Crystal_Pacheco
Level 4

Excellent, thank you Sanford

Crystal_Pacheco
Level 4

Thanks again, but you said you changed GCal mode so it replaces \n with <br> automatically. It didn't change automatically. If i use %0D%0A it line breaks for Gcal, but breaks the ics description after %0D%0A. \n works for ics but /n prints in gcal. There isn't a one code solution for line breaks in both formats yet?

SanfordWhiteman
Level 10 - Community Moderator

'K., try it -- "it" meaning %0D%0A -- with the /beta version now.

Crystal_Pacheco
Level 4

I really appreciate your help, espescially with updating the beta. The gcal works perfectly. The .ics description gets cut off (disappears) after %0D%0A . Is it just me?

SanfordWhiteman
Level 10 - Community Moderator

I think it is just you now?

If I go to

   http://ics.agical.io/beta/?subject=Meet%20{{company.Account%20Owner%20First%20Name}}&description=... 

the ICS file is

BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
COMMENT:via ics.agical.io
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20190724T210129Z
UID:20190724T210129Z-621158197@ics.agical.io
DTSTART:20161026T190000Z
DTEND:20161026T200000Z
ORGANIZER:Sandy
SUMMARY:Meet {{company.Account Owner First Name}}
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT45M
DESCRIPTION:Agical Alarm: Meet {{company.Account Owner First Name}}
ACTION:DISPLAY
END:VALARM
DESCRIPTION:Take\na\nbreak
LOCATION:Sandy's Desk
ATTACH:http://www.example.com/    
END:VEVENT
END:VCALENDAR

which is what I expect.

Crystal_Pacheco
Level 4

It works for real, but I'm using the http://ics.agical.io/beta/alt_sep/  version 😕 

SanfordWhiteman
Level 10 - Community Moderator

The standard alt_sep (semicolon ";" separator instead of "&"):

   http://ics.agical.io/beta/alt_sep?subject=Meet%20{{company.Account%20Owner%20First%20Name}};descr... 

Works the same:

BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
COMMENT:via ics.agical.io
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20190724T211440Z
UID:20190724T211440Z-1731900171@ics.agical.io
DTSTART:20161026T190000Z
DTEND:20161026T200000Z
ORGANIZER:Sandy
SUMMARY:Meet {{company.Account Owner First Name}}
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT45M
DESCRIPTION:Agical Alarm: Meet {{company.Account Owner First Name}}
ACTION:DISPLAY
END:VALARM
DESCRIPTION:Take\na\nbreak
LOCATION:Sandy's Desk
ATTACH:http://www.example.com/
END:VEVENT
END:VCALENDAR‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Are you doing something else in the URL?

Crystal_Pacheco
Level 4

I see what I did wrong. I was missing the beta I had http://ics.agical.io/alt_sep/ instead of http://ics.agical.io/beta/alt_sep/  . Thank you for all your help it works as it should using %0D%0A for line breaks in the description.

SanfordWhiteman
Level 10 - Community Moderator

OK, if it's working for you I'll roll that into production now.

SanfordWhiteman
Level 10 - Community Moderator

If i use %0D%0A it line breaks for Gcal, but breaks the ics description after %0D%0A.

That was what I meant by "automatically" because that's an standard encoded \n, which is transformed to <br> for Gcal now.

On the ICS side it seems like you want a the standard encoded \n to become a double-encoded \n, so that it ends up as a literal string "\n" (not LF, but literal backslash-n) in the ICS file. Let me look at that.

Crystal_Pacheco
Level 4

I need to have line breaks in an event description for the calendar links in both outlook and google calendar. Looking to having my cake and eating it too. 

The event description is being used for both the google calendar link and the ics file link. \n works for Outlook but not for Google Calendar, <br> works for Google Calendar and not for Outlook. 

Linebreak codeWorks
<br>, %3Cbr%3EGoogleCal
\n, %0D%0A

ics

???

Both Google Cal and .ics


Is there one magical line break code thats compatible with both? Thanks for your time.

SanfordWhiteman
Level 10 - Community Moderator

Try it now with \n (real linebreak) in both places -- I changed GCal mode so it replaces \n with <br> automatically.

Crystal_Pacheco
Level 4

Thank you for your response, is the agical link still for : http://ics.agical.io/beta/alt_sep/  ? The gcal still printed \n

SanfordWhiteman
Level 10 - Community Moderator

Why are you using the beta?

Use the main http://ics.agical.io.  But you do have to send it as %0D%0A (because it has to be URL-encoded, like everything).

SanfordWhiteman
Level 10 - Community Moderator

You're embedding an unencoded URL in a URL, so you need to use the alternate query delimiter syntax (this isn't something specific to Agical, it's always the case).

Did you read the articles at https://blog.teknkl.com/tag/agical ?

Jyotsna_Gupta1
Level 1

Thanks for your quick reply.

In my case i am using 3 different URLs of ON24 in a description so {{member.webinar URL}} will not help. It is like a master calendar invite for the whole series (ON24 events are linked to subsequent programs). I am going to try this by encoding url as per your suggestion.

Could you please let me know the cause of endless occurrences of the event?

Thanks,

Jyotsna

SanfordWhiteman
Level 10 - Community Moderator

I'm not really talking about {{member.webinar URL}}. I'm talking about the general need to encode URLs-in-URLs, regardless of where they lead to.

I see spaces in your URLs, which indicates they haven't been run through an encoding step.

Could you please let me know the cause of endless occurrences of the event?

Fix the rest of the encoding up, then post a final rendered URL (with the tokens replaced by live data) as well as the template with the tokens shown.

Jyotsna_Gupta1
Level 1