{"id":6350,"date":"2015-05-26T00:00:00","date_gmt":"2015-05-26T00:00:00","guid":{"rendered":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email\/"},"modified":"2025-12-18T16:48:03","modified_gmt":"2025-12-18T21:48:03","slug":"how-to-code-a-live-dynamic-twitter-feed-in-html-email","status":"publish","type":"post","link":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email","title":{"rendered":"How to Code A Live Dynamic Twitter Feed in HTML Email"},"content":{"rendered":"<p>As we started nailing down logistics for <a rel=\"noopener\" href=\"https:\/\/litmus.com\/conference\" target=\"_blank\" rel=\"noopener noreferrer\">Litmus Live (formerly the Email Design Conference) in 2015<\/a>, conversations about making our launch email bigger and better than last year\u2019s began. How do we top <a rel=\"noopener\" href=\"https:\/\/litmus.com\/blog\/how-to-code-html5-video-background-in-email\" target=\"_blank\" rel=\"noopener noreferrer\">HTML5 video background technique<\/a> in email? By using dynamic content: a live Twitter feed.<\/p>\n<p>Yes, <em>a Twitter feed in an email<\/em>.<\/p>\n<p>Our goals were twofold: generate interest in the conference and use an innovative\u2014and inspiring\u2014technique in the email to do so. After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist.<\/p>\n<figure id=\"post-10014 media-10014\" class=\"aligncenter nudged\" style=\"margin-right: 0;\"><a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/pages.litmus.com\/lp\/TEDC15-launch-email\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\" shaded\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email.jpg\" alt=\"tedc15-email\" \/><\/a><\/figure>\n<p><a class=\"orange btn medium\" style=\"color: #fff; font-weight: bold;\" rel=\"noopener\" target=\"_blank\" href=\"http:\/\/pages.litmus.com\/lp\/TEDC15-launch-email\" target=\"_blank\" rel=\"noopener noreferrer\">View full email in browser \u2192<\/a><\/p>\n<p>You can also view the <a rel=\"noopener\" href=\"https:\/\/litmus.com\/builder\/487fd98\" target=\"_blank\" rel=\"noopener noreferrer\">full code here<\/a> and <a rel=\"noopener\" href=\"https:\/\/litmus.com\/pub\/c039b69\" target=\"_blank\" rel=\"noopener noreferrer\">Litmus test results here<\/a> to see how it displayed across 40+ email clients.<\/p>\n<h2>Dynamic Content in Email<\/h2>\n<p>Dynamic content in email is not a new concept. In fact, it\u2019s frequently used to create personalized, targeted emails. Historically, dynamic content has been implemented strictly through the use of text or images, and pulled through merge tags or variables via an ESP. Dynamic images are linked to a single source file, which gets dynamically overwritten to display a new image for a certain subset of subscribers based on pre-defined personalization parameters. Both of these methods enable you to create a unique, personalized email experience for your subscribers.<\/p>\n<p>We used dynamic images in our launch email to make the live dynamic Twitter feed work across several popular email clients. However, we also used an entirely brand new method to implement dynamic content: dynamic CSS.<\/p>\n<p>While the dynamic CSS worked for WebKit clients, we needed to implement a proper fallback using dynamic imagery for our subscribers using non-WebKit clients. That being said, the live Twitter feed was supported (in one way or another!) in the following inboxes:<\/p>\n<ul>\n<li>AOL Mail\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Apple Mail\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e9703e; color: #fff; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic CSS<\/div>\n<\/li>\n<li>iOS (Native email app)\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e9703e; color: #fff; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic CSS<\/div>\n<\/li>\n<li>Outlook (2000-2013)\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Outlook for Mac (2011 &amp; 2016)\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e9703e; color: #fff; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic CSS<\/div>\n<\/li>\n<li>Outlook.com\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Thunderbird\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Windows Phone\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Windows Mail\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Windows Live Mail\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<li>Yahoo! Mail\n<div style=\"font-size: 8px; text-transform: uppercase; background-color: #e6e6e6; color: #555; padding: 3px 5px; border-radius: 3px; margin: 3px 0px 0px 8px; font-weight: bold;\">Dynamic Image<\/div>\n<\/li>\n<\/ul>\n<h2>Dynamic CSS Content for WebKit Email Clients<\/h2>\n<p>While we could have used dynamic images for all email clients, we opted to use dynamic CSS for progressive enhancement in WebKit email clients, like the iPhone and iPad native email clients, to make the Twitter feed feel more realistic.<\/p>\n<p>So how did we make it work? Using the fifteen most recent tweets that included the <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/search?q=%23TEDC15&amp;src=typd\" target=\"_blank\" rel=\"noopener noreferrer\">#TEDC15<\/a> hashtag, we displayed the first 5 tweets by default, then animated the remaining tweets one-by-one over a span of a minute. This allowed us to make the tweet stream feel real time and had the added benefit of keeping people engaged for longer.<\/p>\n<p>While we updated the CSS file every 10 seconds, the actual content in the email couldn\u2019t be updated in the same way\u2014it needed a complete refresh of the document to work. Users needed to re-open the email or refresh the web version to see updated tweets. Although not ideal, it actually proved to be highly engaging!<\/p>\n<p>To get the live twitter feed working, we used HTML and CSS that would only display in WebKit clients. To achieve this, we created empty &lt;div&gt;&#8217;s and &lt;span&gt;&#8217;s and used the content CSS property to add the content of Twitter users\u2019 names, handles, timestamps, and tweet copy.<\/p>\n<p>Here\u2019s the HTML:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">&lt;div class=\"tweet\" id=\"tweet-1\"&gt;      \n  &lt;div class=\"tweet-avatar-wrapper\"&gt;\n    &lt;div class=\"avatar\"&gt;&lt;\/div&gt;\n  &lt;\/div&gt;\n  &lt;div class=\"tweet-wrapper\"&gt;\n    &lt;span class=\"name\"&gt;&lt;\/span&gt; &lt;span class=\"handle\"&gt;&lt;\/span&gt;\n    &lt;span class=\"timestamp\"&gt;&lt;\/span&gt;\n    &lt;span class=\"copy\"&gt;&lt;\/span&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>To dynamically overwrite the CSS, we relied on an external stylesheet that was updated every 10 seconds and included in our email like so:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">&lt;link rel=\"noopener\" target=\"_blank\" href=\"http:\/\/assets.insights.litmus.com\/campaigns\/tedc-2015\/assets\/tweets.css\" type=\"text\/css\" rel=\"stylesheet\" \/&gt;<\/code><\/pre>\n<p>Here\u2019s the corresponding CSS, with the tweet information in the content property:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">#tweet-1 .name::before {\n  content: \"Kevin Mandeville\";\n}\n\n#tweet-1 .handle::after {\n  content: \"@KevinMandeville\";\n}\n\n#tweet-1 .copy::before {\n  content: \"I'm excited for #TEDC15! Who's going?\";\n}\n\n#tweet-1 .timestamp::after {\n  content: \"1m\";\n}\n<\/code><\/pre>\n<p>The CSS for the tweets was wrapped in a media query that allowed us to display it only in WebKit-based email clients:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  \/* Insert CSS here *\/\n}\n<\/code><\/pre>\n<p>By using empty &lt;div&gt;&#8217;s for the default structure, the content did not show up for non-WebKit email clients. We then fell back to an image of the dynamic twitter feed for non-WebKit subscribers.<\/p>\n<p>The only downside to using WebKit-targeting and the content property is that some email clients, such as Airmail and the Outlook iOS and Android app, would support the WebKit-targeted media query but not the content property, rendering the tweets invisible. But, given that these email clients are a very tiny part of our audience (less than 1%), this was a sacrifice worth making.<\/p>\n<h2>Dynamic Images for Non-WebKit Email Clients<\/h2>\n<p>For non-WebKit email clients, we used the more traditional method of displaying dynamic image since the CSS content property is not well supported in email clients outside of WebKit.<\/p>\n<p>In the email, we referenced a dynamic image of the Twitter feed:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">&lt;img src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tweets.jpg\" width=\"600\" height=\"902\" border=\"0\" class=\"webkit-hide\" alt=\"tweet #TEDC15 to show up in the live feed!\" style=\"color: #666666; font-size: 16px;\"\/&gt;<\/code><\/pre>\n<figure id=\"post-10014 media-10014\" class=\"aligncenter\" style=\"margin-right: 0;\"><a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/pages.litmus.com\/lp\/TEDC15-launch-email\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tweets.jpg\" alt=\"tweet #TEDC15 to show up in the live feed!\" border=\"0\" \/><\/a><\/figure>\n<p>We created a simple web page of just the Twitter feed using the same HTML and CSS from the email. We simply took a screenshot of the feed at the same dimensions of 600&#215;902 through the command line utility <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/wkhtmltopdf.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">wkhtmltoimage<\/a> and dynamically updated that same image every 10 seconds.<\/p>\n<p>Since we were using HTML and CSS for the WebKit view, we hid the image in WebKit to avoid duplicated feeds:<\/p>\n<pre><code style=\"color: #fff; background: #333;\">@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  .webkit-hide {\n    display: none;\n  }\n}\n<\/code><\/pre>\n<p>With this technique, the live Twitter feed worked in even the most troublesome clients (ahem, Outlook) and allowed the majority of our subscribers to join in the fun!<\/p>\n<p>The only major downside to this dynamic image implementation is that <a rel=\"noopener\" href=\"https:\/\/litmus.com\/blog\/gmail-adds-image-caching-what-you-need-to-know\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail caches its images<\/a>. As a result, Gmail users didn\u2019t experience the live Twitter feed. Instead, they saw eight of the most recent tweets and a special message to view the email\u2019s web version for the full effect:<\/p>\n<figure id=\"post-10034 media-10034\" class=\"aligncenter\"><img decoding=\"async\" class=\" shaded\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/gmail-twitter-feed.png\" alt=\"gmail-twitter-feed\" \/><\/figure>\n<h2>How We Built the Dynamic Twitter Integration<\/h2>\n<p><a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/kevinthompson.info\/\" target=\"_blank\" rel=\"noopener noreferrer\">Kevin Thompson<\/a>, our marketing developer, was the mastermind behind the actual Twitter integration. He created a very simple application built on the <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/www.sinatrarb.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sinatra<\/a> framework and hosted on <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/heroku.com\" target=\"_blank\" rel=\"noopener noreferrer\">Heroku<\/a>. You can check out the code and try it out for yourself by <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/gist.github.com\/kevinthompson\/c3023df8e2c904ad00d9\" target=\"_blank\" rel=\"noopener noreferrer\">following the instructions on Github<\/a>. This initial test proved it was possible to generate the tweets in CSS, load the external stylesheet in a handful of email clients, and that those clients could fetch the latest CSS each time the email was opened.<\/p>\n<figure id=\"post-10049 media-10049\" class=\"aligncenter\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/gist.github.com\/kevinthompson\/c3023df8e2c904ad00d9\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/sample-code.jpg\" alt=\"\" \/><\/a><\/figure>\n<p>From there, the application began to get slightly more complex. Because Twitter imposes limits on the number of requests you make to the API, we needed to be sure that we wouldn\u2019t exceed the limit of 150 requests per 15 minutes allotted for search queries. To address this issue, we added a second process to our Heroku application. This process ran in the background, fetching tweets every 10 seconds, and storing them in a cache. The main application process would then load tweets from the cache instead of searching for them directly through Twitter.<\/p>\n<p>Kevin also had to take scalability and speed into consideration. While we had a solution for staying within Twitter\u2019s API limits, our single server likely wouldn\u2019t be able to process the expected number of requests from the 200,000+ recipients of our email. To solve this we implemented the <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/aws.amazon.com\/cloudfront\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon CloudFront CDN<\/a>, allowing us to support far more requests for our assets and also distribute them globally to ensure the files loaded quickly for our entire audience. In our Sinatra application, Kevin also added <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/www.sinatrarb.com\/intro.html#Cache%20Control\" target=\"_blank\" rel=\"noopener noreferrer\">Cache-Control headers<\/a>, which instructed CloudFront to expire assets after 10 seconds. This forced it to request new content from our application more frequently.<\/p>\n<p>In order to keep the results as fresh as possible without exceeding the rate limits of Twitter\u2019s API, we rendered and cached the dynamic CSS and image files every 10 seconds with the results of our Twitter search.<\/p>\n<p>To manage the content of the tweets, both the Twitter search terms and blocked content\/users were controlled using environment variables. Although changing environment variables on Heroku meant that our application would need to restart, because the assets were distributed through the CDN and the application was so simple, a restart only took a few seconds and would be completely unnoticeable. Also, because Heroku provides a user interface for editing environment variables, our marketing team was able to make changes to the search terms and block content as necessary.<\/p>\n<p>If these methods seem too complicated or time-consuming for you, there are third party companies such as <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/movableink.com\" target=\"_blank\" rel=\"noopener noreferrer\">Movable Ink<\/a>, <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/liveclicker.com\" target=\"_blank\" rel=\"noopener noreferrer\">LiveClicker<\/a>, <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/powerinbox.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PowerInbox<\/a> and <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/avari.io\" target=\"_blank\" rel=\"noopener noreferrer\">Avari<\/a> who specialize in dynamic content for email.<\/p>\n<h2>Filtering Bad Tweets<\/h2>\n<p>A big concern for us while incorporating a live dynamic twitter feed was relinquishing control of the content of our email\u2014resulting in some \u201cbad tweets\u201d appearing in the stream. A few folks on Twitter pointed this out:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Its nice having live tweet feeds in email, but my fear would be someone shouting out &quot;this email sucks!&quot; <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Nick (@NicholasLester) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/NicholasLester\/status\/601709007749918720?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> email from <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> is an amazing accomplishment, but vulnerability of uncurated stream problematic for branded <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/emailmarketing?src=hash&amp;ref_src=twsrc%5Etfw\">#emailmarketing<\/a>.<\/p>\n<p>&mdash; Matthew Minnich (@minnichmj) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/minnichmj\/status\/601467671633264640?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>At the same time, we wanted to provide as close to a raw, unfiltered feed of tweets as possible to maintain the \u201cwow\u201d factor. Our hypothesis was that bad tweets would be an edge case scenario and would be cleared out of the feed through constant activity. So, we initially relied on Twitter\u2019s search filters to weed out less than ideal content.<\/p>\n<p>But, we wanted to have extra filters in place, so we also gave ourselves the ability to block specific usernames and text strings after fetching the results from Twitter. We ultimately decided against allowing tweet photos to be in the stream at all, as that could have become unruly and more harmful than just text. Also, it\u2019s impossible to dynamically inject links via the content CSS property, so no links in any tweets worked either\u2014they were simply displayed as text. All tweets were linked directly to the <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/search?q=%23TEDC15&amp;src=typd\" target=\"_blank\" rel=\"noopener noreferrer\">#TEDC15<\/a> tweet stream.<\/p>\n<p>As a final failsafe, we had the option to disable realtime Twitter search results entirely, falling back to a filtered list of favorited tweets from our <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/twitter.com\/emaildesignconf\" target=\"_blank\" rel=\"noopener noreferrer\">@emaildesignconf<\/a> Twitter account. In the end, there were only a couple of bad tweets that needed to be removed. And, as of yet, we haven\u2019t had to use the final failsafe of switching over to favorited tweets at all either\u2014high five <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/search?q=%23emailgeeks&amp;src=typd&amp;vertical=default&amp;f=tweets\" target=\"_blank\" rel=\"noopener noreferrer\">#emailgeeks<\/a>!<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">It&#39;s a good thing we&#39;re all responsible without moderators. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Talis Lin (@TalisLin) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/TalisLin\/status\/601467580667154433?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>The key? Making sure we tested everything from top to bottom. Ensure your designs look great in the inboxes your subscribers use with Litmus.<\/p>\n<div class=\"cta\">\n<table>\n<tbody>\n<tr>\n<td class=\"block-1\"><img decoding=\"async\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/checklist-icon.png\" alt=\"\" \/><\/td>\n<td class=\"block-2\">\n<h2>Test everything top to bottom<\/h2>\n<p>Preview emails on 50 + and breathe a sigh of relief when attempting even the craziest email feats, like a live Twitter feed.<\/p>\n<p class=\"zero\"><a class=\"btn medium orange button\" rel=\"noopener\" href=\"https:\/\/litmus.com\/hello\" target=\"_blank\" rel=\"noopener noreferrer\">Book a demo \u2192<\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>An overwhelmingly positive reaction<\/h2>\n<p>Our audience definitely loved this fun and unique implementation in email. It actually made the email an interactive and communal experience that everybody could participate in. The reactions from Twitter were priceless and even followed some similar themes.<\/p>\n<p>Some people questioned if it was actually real:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Does it really work? <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Ajedsshi (@Ajedsshi) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/Ajedsshi\/status\/601683457933185024?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> I&#39;ve got to see if this tweet appears in the Litmus email<\/p>\n<p>&mdash; Duncan Cartledge (@superdunc) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/superdunc\/status\/601665579494350848?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/tedc15?src=hash&amp;ref_src=twsrc%5Etfw\">#tedc15<\/a> IS THIS THING ON?<\/p>\n<p>&mdash; Lisa Campo (@HighRoadLisa) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/HighRoadLisa\/status\/601858702342139904?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Is this live Twitter feed real? <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Chlo\u00e9 (@ChloeM_F) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/ChloeM_F\/status\/601530899453227010?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> accept my apology. I believe<\/p>\n<p>&mdash; Name darf nicht leer sein (@boulderhalter) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/boulderhalter\/status\/601460117209419776?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Many just stared at it:<\/p>\n<p>https:\/\/twitter.com\/AdrianaCWoods\/status\/601467480192593921<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">I keep staring at the live twitter feed in the  <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> email from <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> to see if it&#39;s real. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/mindblowing?src=hash&amp;ref_src=twsrc%5Etfw\">#mindblowing<\/a> <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/howisthatpossible?src=hash&amp;ref_src=twsrc%5Etfw\">#howisthatpossible<\/a><\/p>\n<p>&mdash; Amy Dodge (@Amykdodge) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/Amykdodge\/status\/601469899307778049?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Staring at this <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> email from <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a>. Live freaking feed directly in your inbox. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/emailmarketing?src=hash&amp;ref_src=twsrc%5Etfw\">#emailmarketing<\/a> <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/t.co\/4XErfhMOcm\">pic.twitter.com\/4XErfhMOcm<\/a><\/p>\n<p>&mdash; Melissa Danh (@MelW) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/MelW\/status\/601465704257204224?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>https:\/\/twitter.com\/hannahsmeznik\/status\/601464682180816896<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Knock knock. Who&#39;s there? Litmus. Litmus who? Litmusit here and reopen the same email for 90 minutes. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Shai Creates (@shaicreates) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/shaicreates\/status\/601463847124271104?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Just sitting here watching the <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> email stream update in real time IN MY INBOX. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a><\/p>\n<p>&mdash; Anno Pohl (@nanoanno) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/nanoanno\/status\/601459997260681218?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>A bunch said hi to others:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Hi mom! <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Andy Barnes (@WhoIsAndyBarnes) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/WhoIsAndyBarnes\/status\/601460959849291777?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>https:\/\/twitter.com\/JazzyJamie\/status\/601670629092433920<\/p>\n<p>https:\/\/twitter.com\/WebDevRich\/status\/601669735483363328<\/p>\n<p>There were several mentions of magic, witchcraft, and Harry Potter:<\/p>\n<p>https:\/\/twitter.com\/oompt\/status\/601495402962116611<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">What kind of satanic bloodmagic is <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> using to load a live twitter feed in the body of an email??? <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Andy Hunt (@andyhunt) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/andyhunt\/status\/601459509865807872?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Litmus\u2019 live twitter feed &#8211; that EVEN works in Outlook &#8211; is wizardry! Where\u2019s platform 9 3\/4? I need that knowledge <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Brittany P (@brittles_86) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/brittles_86\/status\/601481446008725506?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Harry Potter eat your heart out <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Ben Moore (@spongydice) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/spongydice\/status\/601482886311718914?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> you are magic! Amazingly this tweet is appearing in a live feed embedded in an email! <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> it must be magic!<\/p>\n<p>&mdash; Craig Elve (@CraigElve) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/CraigElve\/status\/601672911666184193?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>A slew of tomfoolery and shenanigans ensued, too:<\/p>\n<p>https:\/\/twitter.com\/MrMoon123\/status\/601658129349214209<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Did you know cats can use their tails for balance and have nearly 30 individual bones in them! <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Jason Meeker (@jpmeeker) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/jpmeeker\/status\/601475663212711936?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>https:\/\/twitter.com\/capitocapito\/status\/601458692161019904<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">The shadow government is controlling us all. <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Fabio Carneiro (@flcarneiro) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/flcarneiro\/status\/601467292380073984?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>To top it all off, a lot of people\u2019s minds were blown:<\/p>\n<p>https:\/\/twitter.com\/chandlerroth\/status\/601772837163139073<\/p>\n<p>https:\/\/twitter.com\/adamrandazzo\/status\/601450740964466688<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> shiver my timbers! There&#39;s my Tweet in that there email campaign from <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a><\/p>\n<p>&mdash; Joe Tearle (@jtearle) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/jtearle\/status\/601471438571307008?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Holy Live Feed Batman <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Rob Lyons (@RobPLyons) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/RobPLyons\/status\/601463451618185217?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>https:\/\/twitter.com\/MattRoxo\/status\/601782360460251137<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/KevinMandeville?ref_src=twsrc%5Etfw\">@KevinMandeville<\/a> <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/kevinthompson?ref_src=twsrc%5Etfw\">@kevinthompson<\/a> major props and respect all around! First email that&#39;s ever delivered me amazement. \u2728\ud83d\ude2e\u2728\ud83d\udc4f\ud83d\udc4f\ud83d\udc4f<\/p>\n<p>&mdash; Jason Tropp (@tropp) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/tropp\/status\/601533753874391041?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">My mind is *blown* watching a live Twitter feed scroll in in an email in OUTLOOK, of all clients! <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> &#8211; nice work, <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a><\/p>\n<p>&mdash; Sam Foreman (@forepac) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/forepac\/status\/601465827200630785?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\"><a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a> Someone should tell the folks at Litmus that it&#39;s not possible to put a live Twitter feed in an email. Oh wait. They got it working!<\/p>\n<p>&mdash; Mitrache Adrian (@adimitrache) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/adimitrache\/status\/601617418939703297?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Every email marketer today <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/tedc15?src=hash&amp;ref_src=twsrc%5Etfw\">#tedc15<\/a> <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/t.co\/JOpKAvjqQp\">pic.twitter.com\/JOpKAvjqQp<\/a><\/p>\n<p>&mdash; \ud83e\uddf5Kristinmbond (@EmailSnarketing) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/EmailSnarketing\/status\/601496790085537792?ref_src=twsrc%5Etfw\">May 21, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">People still tweeting inthe <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/litmusapp?ref_src=twsrc%5Etfw\">@litmusapp<\/a> email is like going to sleep at the end of a party and waking up to find people still dancing <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/hashtag\/TEDC15?src=hash&amp;ref_src=twsrc%5Etfw\">#TEDC15<\/a><\/p>\n<p>&mdash; Chris Goldson (@Chrisgoldson90) <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/Chrisgoldson90\/status\/601666324612382720?ref_src=twsrc%5Etfw\">May 22, 2015<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<h2>A look at performance<\/h2>\n<p>We were blown away by the results from this campaign! Over 53% of our opens came in a WebKit email client, so many of our users saw the progressively enhanced version. In total, there were 750+ tweets about <a rel=\"noopener\" target=\"_blank\" href=\"https:\/\/twitter.com\/search?q=%23TEDC15&amp;src=typd\" target=\"_blank\" rel=\"noopener noreferrer\">#TEDC15<\/a> in the first 24 hours after sending the email. Additionally, the email helped drive over 4,000 new visitors to our website and generated over 1,000 new prospects in that same amount of time! Not to mention, this email saw the best engagement we\u2019ve seen from any email we\u2019ve ever sent\u2014almost 60% of users viewed the email for over 18 seconds!<\/p>\n<figure id=\"post-10036 media-10036\" class=\"aligncenter\"><img decoding=\"async\" class=\" shaded\" src=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/screen-shot-2015-05-26-at-3.48.42-pm.png\" alt=\"Screen Shot 2015-05-26 at 3.48.42 PM\" \/><\/figure>\n<p>If you have any questions, please don\u2019t hesitate to ask in the comments below, join the <a rel=\"noopener\" href=\"https:\/\/litmus.com\/community\/discussions\/1440-the-litmus-live-dynamic-twitter-feed-email\" target=\"_blank\" rel=\"noopener noreferrer\">Litmus Community thread<\/a> on the topic, or tweet <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/twitter.com\/kevinmandeville\" target=\"_blank\" rel=\"noopener noreferrer\">@KevinMandeville<\/a> and <a rel=\"noopener\" target=\"_blank\" href=\"http:\/\/twitter.com\/kevinthompson\" target=\"_blank\" rel=\"noopener noreferrer\">@KevinThompson<\/a>!<\/p>\n<h2>Get Awesome Emails<\/h2>\n<p>Don\u2019t miss our next mind-blowing email\u2014sign up to receive news and information about everything happening at Litmus.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"tags":[206],"blog_category":[56,53],"class_list":["post-6350","post","type-post","status-publish","format-standard","hentry","tag-dynamic-content","blog_category-conferences-events","blog_category-tips-resources"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Code A Live Dynamic Twitter Feed in HTML Email - Litmus<\/title>\n<meta name=\"description\" content=\"As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Code A Live Dynamic Twitter Feed in HTML Email\" \/>\n<meta property=\"og:description\" content=\"As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email\" \/>\n<meta property=\"og:site_name\" content=\"Litmus\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/litmusapp\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-26T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-18T21:48:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@litmusapp\" \/>\n<meta name=\"twitter:site\" content=\"@litmusapp\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Code A Live Dynamic Twitter Feed in HTML Email - Litmus","description":"As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email","og_locale":"en_US","og_type":"article","og_title":"How to Code A Live Dynamic Twitter Feed in HTML Email","og_description":"As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.","og_url":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email","og_site_name":"Litmus","article_publisher":"https:\/\/www.facebook.com\/litmusapp","article_published_time":"2015-05-26T00:00:00+00:00","article_modified_time":"2025-12-18T21:48:03+00:00","og_image":[{"url":"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_creator":"@litmusapp","twitter_site":"@litmusapp","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#article","isPartOf":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email"},"author":{"name":"","@id":""},"headline":"How to Code A Live Dynamic Twitter Feed in HTML Email","datePublished":"2015-05-26T00:00:00+00:00","dateModified":"2025-12-18T21:48:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email"},"wordCount":2108,"commentCount":0,"publisher":{"@id":"https:\/\/www.litmus.com\/#organization"},"image":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#primaryimage"},"thumbnailUrl":"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email.jpg","keywords":["Dynamic Content"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email","url":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email","name":"How to Code A Live Dynamic Twitter Feed in HTML Email - Litmus","isPartOf":{"@id":"https:\/\/www.litmus.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#primaryimage"},"image":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#primaryimage"},"thumbnailUrl":"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email.jpg","datePublished":"2015-05-26T00:00:00+00:00","dateModified":"2025-12-18T21:48:03+00:00","description":"As we started nailing down logistics for The Email Design Conference 2015, conversations about making our launch email bigger and better than last year\u2019s began. Due to its unique HTML5 video background technique, last year\u2019s email generated some serious buzz. How could we top that? After many brainstorming sessions, we decided to use the common approach of dynamic content, but with a twist. We used a unique implementation to create a live Twitter feed in an email. Yes, a Twitter feed in an email.","breadcrumb":{"@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#primaryimage","url":"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email-scaled.jpg","contentUrl":"https:\/\/www.litmus.com\/wp-content\/uploads\/2020\/04\/tedc15-email-scaled.jpg","width":1372,"height":2560},{"@type":"BreadcrumbList","@id":"https:\/\/www.litmus.com\/blog\/how-to-code-a-live-dynamic-twitter-feed-in-html-email#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.litmus.com\/"},{"@type":"ListItem","position":2,"name":"How to Code A Live Dynamic Twitter Feed in HTML Email"}]},{"@type":"WebSite","@id":"https:\/\/www.litmus.com\/#website","url":"https:\/\/www.litmus.com\/","name":"Litmus","description":"Are you getting the most out of your email marketing?","publisher":{"@id":"https:\/\/www.litmus.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.litmus.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.litmus.com\/#organization","name":"Litmus Software","url":"https:\/\/www.litmus.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.litmus.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.litmus.com\/wp-content\/uploads\/2025\/04\/featured-image.png","contentUrl":"https:\/\/www.litmus.com\/wp-content\/uploads\/2025\/04\/featured-image.png","width":600,"height":314,"caption":"Litmus Software"},"image":{"@id":"https:\/\/www.litmus.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/litmusapp","https:\/\/x.com\/litmusapp"]},{"@type":"Person","@id":""}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/posts\/6350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/comments?post=6350"}],"version-history":[{"count":2,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/posts\/6350\/revisions"}],"predecessor-version":[{"id":121732,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/posts\/6350\/revisions\/121732"}],"wp:attachment":[{"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/media?parent=6350"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/tags?post=6350"},{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.litmus.com\/wp-json\/wp\/v2\/blog_category?post=6350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}