Allow Personalization Tokens to be Used as URLS in CTAs

It looks like adding a personalization token to a CTA URL is not currently possible in HubSpot, as the token will become URL-encoded when the CTA is created in the CTA tool, instead of populating with a contact's information (unlike a regular link that's created directly in the email editor).

49 Replies
Occasional Contributor

@DanielBertschi @kaburke

 

That's a great workaround for very simple use cases. However, there are more complex use cases where we would need to use a CTA instead of an image. For example, if you're using SMART rules in a CTA and want to track clicks, your solution doesn't work.

 

 

Our client has multiple websites based on geolocale and we need to link to different service pages. In our case, we have a personalization token that's a base URL. The SMART CTAs are set up to assign the page path to different services pages. If we could set this up one time by using a personalization token in our SMART CTAs, it would cut down hours of work. Instead, we are using the manual workaround you've proposed and create SMART modules for every button in every email we send. 

HubSpot Employee
HubSpot Employee

@chereneetemadi your objection is certainly justified. I agree that it would be very helpful to be able to add personalization tokens to CTAs. I'll follow up with the product team to see if this on the road map.

For now, I could see the following workaround do the job: you could use a workflow to write the country-specific part of the URLs into a custom contact property.

Eg. if country = Germany, then set contact property > service page 2nd half of URL > /de/meine-service-seite.

 

Obviously, this wouldn't work for unknown visitors but given that this use case is based on emails using (presumably) smart rules based on list membership based on a contact property called country (or similar) it should work. The link in the email would consist of 2 personalization tokens without space in between: src="{{contact.baseURL}}{{contact.2ndHalfOfURL}}".

 

If you need to implement this for many pages and/or many countries, you would need quite a lot of workflows and/or custom properties to do this, so it's not ideal of course. Still, it should be more efficient than manually configuring all the CTAs.

Occasional Contributor

I cant get (see below) this to work Smiley Sad
As soon as I replace the image source with a personalisation token, the image itself disappears and becomes a textlink with "broken image-logo" infront of it.

What am i dong wrong? Smiley Happy

 

 

 

 

This isn't yet available, however, you can fake the CTA experience by converting a CTA into a normal image:

  1. The easiest way to create a PNG version of a CTA is by simply dragging the CTA (from within the CTA editor) onto your computer desktop. This will immediately create a PNG on your desktop.
  2. Upload this PNG into the file manager
  3. add this PNG (that looks exactly like the CTA) to the email and use the personalization token as the image source: <img src="{{contact.someURLproperty}}" >

Visually, there won't be a difference but you won't get the CTA tracking layer. However, you can still use the link clicks to build lists and workflows.

Occasional Contributor

I second this... Please update us as to what is the workaround.

 

 

HubSpot Employee
HubSpot Employee

@Job1234@jakekirsch

The workaround works as I described earlier but I forgot to address the issue with the broken image:

As with all personalization tokens, the system displays the default version in the editor.  If you don't set a default value for the token that is used as the image URL, then the system will display a broken image in the editor. However, you can easily test the correct version by previewing the content as a specific contact (use the Preview tab on the left-hand side and select an applicable contact). This will replace the broken image with the correct image. I recommend uploading a placeholder image to the file manager and add its URL to the default version of the personalization token. That way you will see the placeholder image in the editor instead of the broken image symbol.

Occasional Contributor

I agree, this functionality would be great and I hope it ends up on the roadmap sooner than later.

 

My company wants to send users a custom link for trials. To do this we put the link in a contact property, but now we have to find a workaround for the CTA. I don't think I can add the personalization token to the end of the link because the entire link is in the contact property. 

HubSpot Employee
HubSpot Employee

Hey @madisonlneal

You should be able to implement this exactly the way you need it. It doesn't matter that the contact property contains the whole URL. You would just need to replace the CTA with a clickable image (please see my previous comments in this thread about how to easily convert a CTA to a JPG) and use the contact property as the href of the link. It would look like this:  

<a href="{{contact.trial_custom_link}}"><img src="your image url" /></a>
 

Occasional Contributor

My apologies, Daniel, I should've clarified that I do plan on using the workaround you suggested! I just wanted to state agreeance that this would be a great feature to have for CTAs. 

 

Thank you! 

New Contributor

I would like the ability to add a click-to-call customer to internal email notifications. 

 

Test: <a href="tel:{{ contact.phone }}">Call Now</a>

Result: Hubspot adds  http:// protocol before the phone number

 

I also tried using an image asset as Daniel suggested.

New Contributor

Hello guyssss , i ve wanted to do the same as you but couldn't so i read a loooot of threads and finally came up with my own solution 

 

Here is the idea our strategy is based on providing ebooks to generate leads (we got 2 types of book a general and a expert one, the first one leads you to an expert book recommandation on the thank you page, where you have to answer one more question to get the second ebook)

 

So what we wanted to do is to create two workflows so each time you download an ebook you get in the email with the name and the ebooks pdf as an hyperlink ANNNND that The second form links to the first one knowing that the second one doesn't ask for an email how could hubspot link it to the same user ??

 

Here is what we did :

 

1 - in the ebooks links we use a jquery to send all the informations about the book in the link as query strings , slug, id, and pdf link

 

2- when you get on the landing page there is a form that has a hidden field that populates the link query and another field that contains the books name (each time we clone the form and change the name of it cause if we provided it in the query string we would have gotten a name with " - ")

 

3- We then changed the form code to make it redirect to the thank you page enriching the link with all the form informations (name email etc..)

 

4- the second form has first name last name email etc as hidden fields so the second forms gets populated as if the lead did it him self 

 

5 - In the email we used the ebook name and hyperlink by clicking on the the CODE icon when you select the text bloc and we customize the href links with the informations we populated from the query strings  ***we thought of using the books name was more personnalized as we use it in the email preview text ! and it renders very nice

 

IF YOU STILL WANNA USE A CTA, YOU CAN USE A IMAGE OF THE CTA NOT A REAL HUBSPOT CTA , and change its HREF attribute and use the link token you populated from the query strings

 

Hope our experience will help you do what you want to achieve

 

Cheers,

New Contributor

It would be nice to be able to style and add a URL to a personalization token. We need to be able to send out a mass email to customers with their login portal URL, so having the ability to make a personalization token for a contact property with the login portal URL be clickable and bolded would be most helpful.

Regular Contributor

Just came here to say we need this feature as well. Thanks.

Occasional Contributor

I just don't get, why it's still not added, especially for marketing teams.

We tried to use Personolized links (created by API) in Buttons for Marketing Emails, but it didn't work. We can't insert personalization token into CTA, Buttons & Images (especially useful for discount or code promotions).

Also, we cannot create workflow, that generates Login Activation links and track clicks.

New Contributor

Agreed. Super frustrating. You can't add to the redirect url of forms and you can't add a personalization token to emails. I can't do what I HAVE to do to do my job.

Occasional Contributor

There is no way of adding the recipients email to a url? 

Visitor

Love this! We are looking for the same thing!

New Contributor

We definitely need this! 

Occasional Contributor

Our dilemma was using the contact owner's meeting link to hyperlink text in the email body. You can easily add personalization tokens into an email body but there's not an obvious way to change the text used to display them. We solved for this by clicking "More" > "Source code" and inserting hyperlinked text referencing the contact property that way. Works like a charm... but there should be a more straight-forward way to do this.

 

Please <a href="{{contact.hubspot_owner_id.meetings_link}}">click here</a> to schedule a meeting.
New Contributor | Gold Partner
New Contributor | Gold Partner

I would add one big piece to this. You should be able to use personalization tokens in hyperlinks!

 

See here how this could've made life so much easier:

 

Image 2020-02-25 at 12.36.35 PM.pngImage 2020-02-25 at 12.38.28 PM.png

 

Visitor

Here is a workaround: go to content > more > more options > add a html snippet : 

and here you can setup your button as you want, with personalization tokens:

 

<div style="background-color: #4CAF50;text-align:center; padding: 20px; width: 200px;height: 20px; margin: auto;width: 60%; border-radius: 10px;"> <a href="https://www.yourcompanyurl.com?company={{contact.company}}&city={{contact.city}}" style="font-size: 22px;color:#ffffff;text-decoration: none;">Know more</a> </div>