The platform’s new integration may point to where the social media company is headed.
Richard Whiddington, October 28, 2022
As the internet rages and revels about the confirmation of Elon Musk’s $44-billion Twitter takeover, the social media company has given a timely wink at the future. Perhaps unsurprisingly, it involves cryptocurrencies and NFTs.
In an integration Twitter has called NFT Tweet Tiles, users will be allowed to buy, sell, and showcase NFTs through tweets. The feature, which is still being tested, has an enlarged panel for displaying an NFT artwork and offers a click-through button to marketplace listings.
At present, the development only works with four marketplaces; sport-focused Jump.trade, art-centric Rarible, gaming haven Dapper Labs, and Magic Eden, the largest marketplace on the Solana blockchain.
The choice of first partners is interesting not only for the number of blockchain networks it includes—namely Ethereum, Tezos, Polygon, Flow, Solana, and Immutable X—but also for the absence of OpenSea, often referred to as the world’s first and largest NFT marketplace.
The news was announced in a tweet by Twitter Dev and although Musk’s personal involvement is unknown and seemingly unlikely, Magic Eden tweeted its gratitude to the company’s new owner “for making this happen.”
For now, NFT Tweet Tiles may be little more than an aesthetic upgrade for Twitter’s legion of NFT devotees, but it potentially gestures in the direction the San Francisco-based company is headed. Twitter posted a net loss of $221 million in 2021 and has struggled with profitability issues for years. Beyond cutting spending, including an anticipated massive staff layoff, Twitter needs bolster advertising, which made up more than 90 percent of its revenue last year, and find new revenue streams. Closer connections with NFT marketplaces may well tick both boxes.
The integration presents a format that will likely encourage NFT platforms to advertise on Twitter and, potentially, for the social media company to take a cut of sales in the future.
The move continues Twitter’s push to cater to the NFT and crypto communities following the launch of hexagonal NFT profile photos and media reports earlier in October claiming that the company was developing a cryptowallet prototype.
Share
By Annie Armstrong, 1 day ago
By Amy Castor, Sep 15, 2022
By Tim Schneider, May 4, 2022
By Kriston Capps, 1 day ago
By Jo Lawson-Tancred, 1 day ago
©2022 Artnet Worldwide Corporation. All Rights Reserved.var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
pagetype = document.querySelector(‘meta[property=”og:type”]’).getAttribute(“content”),
pagetypeurl = document.URL,
pagetypeforce = pagetypeurl.substr(pagetypeurl.length – 3);
isnewsletter = pagetypeurl.includes(“?page_1”);
w = pagetype + 20 * Math.round(w / 20), h = pagetype + 20 * Math.round(h / 20), googletag.cmd.push(function() {
googletag.pubads().setTargeting(“width”, w), googletag.pubads().setTargeting(“height”, h), 1 == isnewsletter && googletag.pubads().setTargeting(“isfirstpage”, [‘Y’, pagetypeforce] )
});
(function defernl() {
if (window.jQuery) {
if (jQuery(window).width() > 619) {
setTimeout(function() {
var cookieSettings = {
recentlyShown: {
expiration_minutes: 5
},
signedUp: {
expiration_days: 14
},
closedSignupBar: {
expiration_days: 5
}
};
var generalSettings = {
loadFontAwesome: false
};
if (!window.jQuery) loadJQuery();
var $ = window.jQuery;
function addCss(fileName) {
var head = document.head
, link = document.createElement(‘link’);
link.type = ‘text/css’;
link.rel = ‘stylesheet’;
link.href = fileName;
head.appendChild(link);
}
function appendNewsletterSignup() {
var signup =
”
//hide on mobile phones
+ ‘ @media (max-width: 575px){ #ouibounce-modal {display:none !important;} }’
+ ‘ @media (max-width: 767px){ .close-signup {top:0 !important;} }’
+ ‘ @media (max-width: 1199px){ #ouibounce-modal .description {font-size:13px !important;} }’
+ ”
+ ‘
+ ‘
+ ‘
+ ”
+ ”
+ ‘
+ ‘
+ ‘
Get hand-picked stories from our editors delivered straight to your inbox every day.
‘
+ ‘
‘
+ ‘
+ ‘
+ ‘
+ ‘
+ ‘Please enter a valid email address’
+ ‘
‘
+ ‘
+ ‘Signup failed. Please try again later.’
+ ‘
‘
+ ‘
‘
+ ‘
+ ‘‘
+ ‘
‘
+ ”
+ ”
+ ‘
‘
+ ‘
‘
+ ‘
‘
+ ”
+ ‘
‘
+ ‘
‘
+ ‘
‘
+ ‘
‘
+ ‘
‘;
$(‘body’).append(signup);
}
var paywallPagesRegex = /^/subscribe|subscribe-confirm|my-account(/|$)/;
function initNewsletterSignup() {
// don’t show it on paywall-related pages where the user might be in the process
// of subscribing, or managing their account
if (paywallPagesRegex.test(window.location.pathname)) {
return;
}
// Append ouibounce to page
var ouibounceScript = ”;
$(‘body’).append(ouibounceScript);
// Add animation css
addCss(‘https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css’);
if (generalSettings.loadFontAwesome) {
addCss(‘https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css’);
}
// Check if ouibounce exist before calling ouibounce
var initOuibounce = setInterval(function() {
if (typeof ouibounce !== ‘undefined’) {
appendNewsletterSignup();
var $modal = $(‘#ouibounce-modal’);
SignupForm.init($modal.find(‘form’), function onSuccess() {
//hide form fields and show thank-you message
$modal.find(‘.form-row’).hide();
$modal.find(‘.newsletter-signup-thank-you’).fadeIn(‘fast’);
setNewsletterCookie(‘signedUp’, 1);
//after successful signup, hide the signup bar after 5 seconds
setTimeout(function() {
closeSignupBar();
}, 5000);
});
// Handler for close signup button
$(‘body’).on( ‘click’, ‘.close-signup’, function(){
setNewsletterCookie(‘closedSignupBar’, 1);
closeSignupBar();
});
ouibounceAPIaccess = ouibounce(
$modal[0], {
aggressive: true,
sensitivity: 50,
callback: function() {
slideInModal(‘Down’);
}
}
);
clearInterval(initOuibounce);
}
}, 100);
}
function slideInModal(upOrDown) {
$(‘#ouibounce-modal’)
.removeClass(‘slideOutDown slideOutUp’)
.addClass( ‘slideIn’ + upOrDown );
setNewsletterCookie(‘recentlyShown’, 1);
}
function setNewsletterCookie(cookieName, value) {
//exdays*24*60*60
var settings = cookieSettings[cookieName];
var expirationMinutes = settings.expiration_minutes;
if (!expirationMinutes) {
expirationMinutes = daysToMinutes(settings.expiration_days);
}
setCookie(cookieName, value, expirationMinutes);
}
function daysToMinutes(numDays) {
return numDays * 24 * 60;
}
/**
* Generic setCookie() method, used by setNewsletterCookie().
* There is probably no need to call this directly – use setNewsletterCookie().
*/
function setCookie(cname, cvalue, expMinutes, prefix) {
//default prefix is ‘artnet_newsletter_’
if (prefix == undefined) {
prefix = ‘artnet_newsletter_’;
}
var d = new Date();
d.setTime(d.getTime() + (expMinutes*60*1000));
var expires = “expires=”+d.toUTCString();
//console.log(prefix + cname + “=” + cvalue + “;” + expires + “;path=/”);
document.cookie = prefix + cname + “=” + cvalue + “;” + expires + “;path=/”;
}
function getCookie(cname, prefix) {
//default prefix is ‘artnet_newsletter_’
if (prefix == undefined) {
prefix = ‘artnet_newsletter_’;
}
var name = prefix + cname + “=”;
var ca = document.cookie.split(‘;’);
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length,c.length);
}
}
return "";
}
function closeSignupBar() {
var $modal = $('#ouibounce-modal');
$modal.addClass( $modal.hasClass('slideInUp') ? 'slideOutDown': 'slideOutUp' );
}
function loadJQuery() {
var script = document.createElement('script');
script.src = "https://code.jquery.com/jquery-3.1.1.min.js";
script.integrity = "sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=";
script.crossorigin = "anonymous";
document.body.appendChild(script);
}
function checkCookies() {
//if any of these cookies are found, we don't show the modal.
var cookieNames = ['recentlyShown', 'signedUp', 'closedSignupBar','signup_cookie'];
var i = cookieNames.length,
found = false;
while (i–) {
if (getCookie(cookieNames[i]).length) {
found = true;
break;
}
}
if (!found) {
initNewsletterSignup();
}
}
var SignupForm = {
regex: {
email: /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
},
// Init – Anything you want to happen onLoad (usually event bindings)
// ——————————————————————-
init: function (formElement, onSuccess) {
var ctx = this;
ctx.customSerializer();
if (!onSuccess) {
throw Error('onSuccess callback is required');
}
var $form = $(formElement);
$form.submit(function(e){
e.preventDefault();
var $email = $form.find('.signup-email');
var valid = ctx.validate( $form, $email);
if(valid){
// Hide the errors
$form.find('.errors').children().hide();
// Submit the form
ctx.submit($form, onSuccess);
} else {
// Focus on the email input box
$email.focus();
// Show email validation error and hide other errors
$form.find('.invalid-email').show().siblings().hide();
}
});
},
// FUNCTIONS
// ===================================================================
// Signup validation
// ——————————————————————-
validate: function( $form, $email ){
var ctx = this;
// Does the email match our regex?
return ctx.regex.email.test( $email.val() );
},
// Signup submission
// ——————————————————————-
submit: function($form, onSuccess) {
var ctx = this;
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: JSON.stringify( $form.serializeFormJSON() ),
// dataType: 'json',
contentType: 'application/json; charset=UTF-8',
crossDomain: true,
timeout: 10000
})
.done(function(data, textStatus, jqXHR) {
onSuccess();
})
.fail(function(jqXHR, textStatus){
// Show signup failure error and hide other errors
$form.find('.signup-failed').show().siblings().hide();
});
},
// Extends jQuery with a function to serialize to JSON
// ——————————————————————-
customSerializer: function(){
$.fn.serializeFormJSON = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
}
};
//show automatically after delay
setTimeout(function(){
var $modal = $('#ouibounce-modal');
//if there are cookies indicating that we shouldn't show the signup bar, then the modal won't have been added to the page
//and we can just return here.
if (!$modal.length) {
return;
}
//don't run this function if the user has already triggered the modal by leaving the viewport
if ($modal.hasClass('slideInDown')) return;
//position at bottom of screen
$modal.css({
top: 'auto',
bottom: 0
});
slideInModal('Up');
$modal.show();
},20000); //20 seconds
$(function() {
checkCookies();
});
}, 7500);
}
} else {
setTimeout(function() { defernl() }, 250);
}
})();
artnet and our partners use cookies to provide features on our sites and applications to improve your online experience, including for analysis of site usage, traffic measurement, and for advertising and content management. See our Privacy Policy for more information about cookies. By continuing to use our sites and applications, you agree to our use of cookies.
You are currently logged into this Artnet News Pro account on another device. Please log off from any other devices, and then reload this page continue. To find out if you are eligible for an Artnet News Pro group subscription, please contact [email protected]. Standard subscriptions can be purchased on the subscription page.
Log In