Embedding a live Twitter (now X) feed on a WordPress site used to be a two-minute job: paste the iframe from publish.twitter.com and move on. That was the world before X’s API tightened up and before the platform spent two years rebranding. The simple embed still works, but it’s a stranger to your theme, eats Largest Contentful Paint, and gives you zero control over what shows up. If you actually want a Twitter feed that fits your design, refreshes on a schedule you control, and survives API rate limits, you need something more than an iframe.
Custom Twitter Feeds Pro Elite is Smash Balloon’s answer to that. It’s the third plugin in the same family as Instagram Feed Pro and Custom Facebook Feed Pro, and it works the same way: one builder, one caching layer, one set of layouts, one widget/block/shortcode trio. Drop a feed on any page, style it with the visual customizer, and the plugin handles the API calls and the cache in the background.
I spent a few hours pulling apart the source, walking the admin, and reading the hook layer to write this. Below is a working person’s tour: what’s inside, how to get it running, how the trinity siblings line up, and what to do when X’s API decides to act up.
Table of contents
- What Custom Twitter Feeds Pro Elite does
- Core features at a glance
- The Feed Builder, step by step
- Installation and first feed
- Working with Twitter’s API rules
- Layouts and customisation in detail
- Caching and the background refresh job
- Common use cases
- Developer reference: hooks, filters, shortcodes
- Performance, compatibility, and gotchas
- Pricing and licensing
- Frequently asked questions
- Final thoughts
What Custom Twitter Feeds Pro Elite does
At its core the plugin does one thing: it talks to Twitter/X on behalf of your site, caches what it gets back, and renders it as HTML inside whatever page or widget area you choose. The "Pro Elite" build is the top tier of Smash Balloon’s Twitter product, the one bundled into their All Access package. It adds carousel and card layouts, multi-source feeds, advanced filters, the local image and video proxy, and the visual feed builder that the free version doesn’t have.
The vendor is Smash Balloon, a Chicago-based company that’s been building social-feed plugins for WordPress for more than a decade. The free predecessor is still listed on WordPress.org’s plugin directory Their other plugins (the Facebook, Instagram, YouTube, and reviews feed) all share the same internal framework, which is why the admin looks identical across the family. If you’ve ever used Instagram Feed Pro or Custom Facebook Feed Pro, the Twitter version will feel like coming home.
Who is it for? Two main groups. Site owners who want their X feed embedded as a styled, themeable block (think a homepage section, a sidebar widget, a footer ticker) rather than a stock iframe. And developers who need to programmatically render a feed across many sites or many positions and don’t want to hand-roll an API client every time. The plugin handles auth, caching, error states, and rendering; you just pick what to show.
Core features at a glance
- Multiple feed types: user timeline, hashtag search, keyword search, list, single tweet, home timeline (own logged-in feed), mentions, and combined feeds that pull from several sources into one stream.
- Pre-built layout templates: default list, masonry grid, carousel slider, and a Twitter-card style. Each is responsive out of the box.
- Visual Feed Builder: a step-by-step wizard that asks for the source, lets you pick a template, and drops you into a live preview/customise editor with sidebar controls.
- Header, footer, and per-tweet controls: show or hide the avatar, handle, display name, date, action icons (like/retweet/reply counts), media, and quoted tweet block.
- Retweet, reply, and media-only filters: include or hide retweets, replies, or limit to tweets with media attached.
- Load-more pagination and auto-loading new tweets: a button to fetch older tweets, plus optional polling that surfaces newly-posted tweets without a page reload.
- Local media resizing and video proxying: tweet images are resized and stored on your server, and videos are streamed through a small REST endpoint so X’s CDN doesn’t get a referer it might not like.
- GDPR consent mode: blocks the feed from rendering for visitors who haven’t consented to social/marketing cookies, with a "click to load" placeholder.
- Two-tier cache with a configurable cron schedule: the plugin only hits X’s API in the background, so a normal page view is just HTML and never blocks on a network call.
- Shortcode, Gutenberg block, classic widget, Elementor widget, and Divi module: the same feed is available in every editor on the site.
- Multiple feeds per site, each with its own settings: a homepage marketing feed, a footer "follow us" widget, and a press-page hashtag feed can all live side by side.
- Developer hooks: a long list of filters with the
ctf_prefix to override classes, text, media handling, cron intervals, and capability checks.
The Feed Builder, step by step
The Feed Builder is the page you land on at All Feeds, under the Custom Twitter Feeds menu in WP admin. The first time you open it, it’s empty. Click Add New and the wizard walks you through three decisions:
-
Pick a feed type. This is the source. A user timeline pulls the latest tweets from a single handle. A search feed runs an X search query and pulls anything matching. A hashtag feed is a shortcut for a search restricted to a specific tag. A list feed pulls from a public X list you own. A mentions feed shows tweets directed at your account. A home timeline shows your own logged-in feed (useful only if the connected X account is yours). Single tweet renders a specific tweet by ID, like a fancy blockquote.
-
Connect or choose a source. You either connect a new X account or pick one already connected. Smash Balloon doesn’t have a hosted middleware, so the connection is real OAuth: you go to X, authorise the app, come back with tokens. For search/hashtag feeds the source is just a string, no extra connection needed beyond having one account hooked up so the plugin can run the request.
-
Pick a template. Default list is what most sites want: avatar, handle, text, media, date, action icons stacked in a column. Masonry is a Pinterest-style grid. Carousel is a slider with breakpoint-aware slide counts. Card is the "tweet inside a bordered box" look that you see on X’s own embed widget.
After those three picks you land in the live customise editor. The right side is a preview of how the feed will render, the left side is a tabbed sidebar with settings groups: Feed, Tweets, Header, Load More, Lightbox, etc. Every change updates the preview in real time. Save the feed and you get a feed ID; that’s what the shortcode references.
Installation and first feed
If you’ve installed any plugin in WP admin before, this is normal:
- Upload the zip via Plugins, Add New, Upload Plugin, then Install Now, then Activate.
- The new Custom Twitter Feeds menu shows up in the left-hand admin sidebar.
- Click it, then click Add New on the All Feeds screen.
- Run through the wizard above. The first time you connect, you’ll land on X’s OAuth screen; sign in with the X account whose feed you want to embed, grant the app, and come back to the wizard.
- After saving, the All Feeds list shows your new feed with a Shortcode column. Copy the shortcode, paste it into a page, post, or widget area. Or use the Gutenberg block and pick the feed from a dropdown.
If you’re connecting an X account that isn’t yours (you’re running an agency site, embedding a client’s feed), do the OAuth step from a logged-in X session for that account. The plugin stores the access token in WordPress options keyed against the connected screen name; you can connect multiple accounts and route different feeds to different ones.
The wizard also handles the "I want a different feed than the obvious one" case: search and hashtag feeds skip the account connection and just need the query string. That’s the path I’d take for any feed where you want public discussion rather than your own tweets, e.g. a conference-hashtag feed, a brand-mention feed, or a "what people are saying about us" stream.
Working with Twitter’s API rules
X’s API is the elephant in the room. Free-tier access has been throttled hard since 2023, and even paid tiers have rate limits that matter at scale. The plugin’s design assumes that and works around it the same way Smash Balloon’s other plugins do for Facebook and Instagram:
- Cache aggressively. A feed’s tweets are pulled once per cron cycle (default twice daily, configurable down to every 30 minutes on the Elite tier) and stored in the WordPress options table as a transient. Page views read from that transient. The actual API call happens in the background, decoupled from any visitor.
- Batch requests. When pulling a long history (e.g. the last 200 tweets for a busy account), the plugin does it across multiple cron ticks rather than one big request. The
ctf_cron_additional_batchevent is the second-pass that picks up where the first left off. - Fall back gracefully. If the API returns an error (rate limit, suspended account, invalid token), the existing cached tweets keep showing. No blank feed.
- Respect quote-tweet quotas. Quote tweets and their nested tweet text each cost a separate API request; the plugin tracks that and skips quote-fetches when you’ve hit a limit you set.
What you actually need to do as a site owner: connect one X account, even if you’re not pulling that account’s tweets, because the plugin uses your tokens to issue queries. For high-traffic sites or many feeds, look at upgrading X’s API tier; even the Basic paid plan gives a much higher quota than free. The plugin doesn’t pay for that, you do; what the plugin does is make sure every API call you spend goes as far as possible.
For developers, the OAuth endpoints used live in inc/CtfOauthConnectPro.php and map directly to api.twitter.com/1.1/ and the v2 alternates where applicable. The endpoint reference itself lives in the official X developer documentation, which is worth bookmarking if you plan to write custom filters that touch the API surface. If you want to swap the auth path, the ctf_license_key and the OAuth config can be filtered on the way through.
Layouts and customisation in detail
The four layouts (default list, masonry, carousel, card) all share the same per-tweet markup, just different containers. Inside any layout you can toggle:
Per-tweet elements
- Avatar: show, hide, size, shape (circle or square).
- Handle and display name: show one or both, font and size.
- Text: max characters with a "see more" toggle, or full body.
- Media: show inline, lightbox on click, hide entirely. Images and videos both supported.
- Quote tweet: render the nested quoted tweet in a bordered sub-card, or hide it.
- Date: format with the WordPress date formatter, or use a relative "2h ago" formatter.
- Action icons: like count, retweet count, reply count, click-to-X icon. Each toggleable individually.
Header
Three header styles ship with the plugin. The standard header is profile picture, display name, handle, follow button. The text-only header is just the display name. The generic header is a custom heading you write yourself, useful for hashtag and search feeds where there isn’t a single "account" to show.
Load more and pagination
Three modes: hide load-more entirely (only show the initial batch), show a load-more button that fetches the next batch from cache, or autoload (the plugin polls in the background and slides newer tweets in at the top). Autoload is the dramatic mode; it’s nice for live-event coverage but it can cause layout shift if your feed sits high in the page.
Lightbox
Image and video clicks open in a lightbox by default. The lightbox has next/previous controls so you can scroll through media without leaving the page. Turn it off if you want clicks to go to the original tweet on X instead.
Carousel breakpoints
The carousel layout exposes responsive breakpoints. Default: 1 slide on mobile, 2 on tablet, 3 on desktop. You can override per-breakpoint in the Carousel settings sub-tab, and if you want truly custom breakpoints you can add_filter('ctf_carousel_breakpoints',...) in code.
Caching and the background refresh job
Caching is the part most people get wrong with social embeds. Without caching, every page view triggers an API call, which (a) is slow, (b) burns through your API quota, and (c) breaks the moment X rate-limits you. The plugin’s two-tier model fixes that.
Tier 1: per-feed transient
Each feed’s last-pulled tweets are stored as a WordPress transient. The transient key includes a hash of the feed’s settings, so changing a setting effectively invalidates the cache for that feed without disturbing other feeds.
Tier 2: cron-driven refresh
A WP-Cron event called ctf_feed_update runs on the schedule you pick in Global Settings (every 30 minutes, hourly, twice daily, or daily). It iterates feeds that are due for refresh, fetches new tweets from X, and rewrites the transient. Page views never trigger this directly; they only read from the transient.
This decoupling means the plugin can survive an X outage. If X is down or rate-limiting you, the cron job logs the failure and leaves the old transient in place. Visitors keep seeing the last successful pull. Once X is healthy again, the next cron tick refreshes the cache.
For sites that get low traffic (e.g. a portfolio site that gets two visitors a day), WP-Cron is request-driven and won’t fire if nobody visits. The plugin warns you about this and offers a documented fix: replace WP-Cron with a real system cron that pings wp-cron.php on a real interval. Standard WordPress hosting tip, not specific to this plugin, but the docs cover it.
For high-traffic sites, the cron can be moved to a shorter interval; the ctf_site_cache_limit filter exposes the live read TTL, and the schedule itself is set via the standard WP-Cron schedule slug (sbi30mins, hourly, twicedaily, daily). The action hook ctf_after_single_feed_cron_update fires after each per-feed update if you want to react (purge a page cache, ping a monitoring service, log to your own analytics).
Common use cases
A few patterns I see show up over and over for plugins like this. Useful to map your situation onto one of them.
Marketing homepage social proof
The classic case: a "What people are saying" section on your landing page, pulling either your account’s recent tweets, a hashtag your community uses, or a search for your brand name. Use the card layout, set a fixed height with a soft "see more" link, and limit to tweets with media so the section looks lively rather than sparse. The plugin’s media-only filter handles the last part automatically.
Conference or event live feed
Hashtag feed, autoload enabled, carousel layout (or a tall masonry grid if you have a dedicated event page). The autoload polling adds new tweets without a page reload, which is exactly what you want during a live event. Pair this with a Newsletter signup form so people who see the buzz can subscribe for post-event content.
Press and media page
Mentions feed, default list layout, no autoload. Pull the last 50 mentions of your account, optionally filter out retweets so it’s just original commentary, and let visitors scroll. This is the kind of page that should refresh every few hours, not every 30 minutes; bump the cron interval up to save API quota.
Author or contributor profile
User timeline feed embedded in author archive pages. If you run a multi-author site, you can create one feed per author and template the shortcode into a per-author template part. The plugin lets you create many feeds, each with its own ID; the shortcode [custom-twitter-feed feed=12] selects which one to render.
Combined cross-channel widget
Combine your Twitter/X feed with Custom Facebook Feed Pro and Instagram Feed Pro in a footer "Follow us" widget. Each plugin renders its own feed with the same layout family, so the three sit next to each other and look like one block. This is the entire point of the Elite/All Access bundle: the visual consistency across the trinity is what makes the combined widget look intentional rather than glued together.
Developer reference: hooks, filters, shortcodes
The plugin exposes a generous set of hooks. Here are the ones you’ll actually use.
Shortcode
The main shortcode is [custom-twitter-feed] (with a hyphenated custom-twitter-feeds plural alias). Attributes:
[custom-twitter-feed
feed="12"
num="10"
includereplies="false"
includeretweets="true"
showheader="true"
showbutton="true"
class="my-extra-class"]
feed is the saved feed’s numeric ID from All Feeds. Everything else is optional and lets you override per-instance without saving a new feed.
Filter: change the visible tweet text
add_filter( 'ctf_tweet_text', function ( $text, $feed_options, $post ) {
// strip image-hosting URLs that X used to inline
return preg_replace( '#https?://t\.co/\S+#', '', $text );
}, 10, 3 );
This filter runs on every tweet’s body just before it’s added to the HTML. It’s the right place to do redactions, link rewrites, or merge in custom microformat data.
Filter: drop tweets from the feed
add_filter( 'ctf_filter_out_tweet', function ( $drop, $tweet_text, $tweet ) {
// hide tweets from a specific bot account
if ( $tweet['user']['screen_name'] === 'spam_bot_99' ) {
return true;
}
return $drop;
}, 10, 3 );
Return true and the tweet is skipped before it ever reaches the rendered HTML. Useful for blocklists, NSFW filtering by keyword, or any "I never want this tweet to show" rule the admin UI can’t express. The hook itself is a standard WordPress filter, so all of the patterns from the apply_filters() reference apply.
Filter: change the per-API-call page size
add_filter( 'ctf_num_in_request', function ( $num, $settings ) {
// pull a smaller batch on a quota-constrained tier
return 50;
}, 10, 2 );
Each cron refresh asks X for num tweets. Default is 200 (the X v1.1 max). Drop it to 50 or 25 if you’re on the smallest API tier.
Filter: add CSS classes to the feed wrapper
add_filter( 'ctf_feed_classes', function ( $classes ) {
return $classes. ' my-theme-twitter-feed';
} );
Handy for adding a theme-specific class so your CSS can target the feed without depending on Smash Balloon’s class names.
Filter: gate access to settings by capability
add_filter( 'ctf_settings_pages_capability', function () {
return 'edit_pages';
} );
Default is manage_options (administrators only). Bump it down to edit_pages and editors can manage feeds without being given full admin.
Filter: customise carousel breakpoints
add_filter( 'ctf_carousel_breakpoints', function () {
return [
320 => [ 'slidesPerView' => 1 ],
720 => [ 'slidesPerView' => 2 ],
1200 => [ 'slidesPerView' => 4 ],
];
} );
If the default carousel layout shows too many slides at your container width, this is where to fix it.
Action: fire your own logic after each cron update
add_action( 'ctf_after_single_feed_cron_update', function ( $transient_name ) {
// purge a page cache when a feed refreshes
if ( function_exists( 'wp_cache_clear_cache' ) ) {
wp_cache_clear_cache();
}
}, 10, 1 );
Fires every time a feed’s transient is rewritten. Use it to bust your page cache, ping a heartbeat URL, or log refresh activity.
Action: inject content into the rendered feed
add_action( 'ctf_before_feed_start', function ( $ctf_feed ) {
echo '<p class="ctf-disclaimer">Tweets are cached and refreshed every 30 minutes.</p>';
} );
ctf_before_feed_start and ctf_before_feed_end are both rendered inside the outer feed wrapper, so anything you echo lands inside the styled container.
REST endpoint
The plugin registers /ctf/v1/video-proxy to stream Twitter video through your server. Useful when X’s video CDN throws CORS or referer errors. You don’t usually call this directly; the front-end script does. But if you want to disable it (some hosts block streaming responses), remove_filter the REST registration or hook your firewall to deny the route.
Gutenberg, Elementor, Divi
The plugin registers a server-rendered Gutenberg block (smashballoon/custom-twitter-feeds-block), an Elementor widget under the Smash Balloon Elementor category, and a Divi module under the Smash Balloon Divi category. All three delegate to the same shortcode handler under the hood, so a feed you build once shows up everywhere.
Performance, compatibility, and gotchas
A few things worth knowing if you’re going to run this in production.
Front-end footprint
The plugin enqueues one stylesheet and one small JavaScript file by default. The JS only does load-more, lightbox, and (optionally) autoload polling. If you don’t need any of those (a static feed, no lightbox), you can dequeue the JS in your theme and the feed still renders fine; you just lose the interactive bits.
Image storage
Avatars and tweet images are downloaded to your uploads/ctf/ folder and resized locally. This is fast on the front end (no third-party request per image), but on a large feed it means your uploads folder grows. The cleanup cron prunes old assets weekly, but if you’re disk-constrained on shared hosting, monitor that folder.
GDPR consent
The GDPR mode replaces the feed with a placeholder until the visitor accepts cookies. It works with most consent managers via a JS event the plugin listens for. If your consent stack is unusual, you may need to wire it up manually; the plugin’s docs cover the API.
Multilingual sites
The plugin’s strings are properly i18n’d (text domain custom-twitter-feeds). It plays nicely with WPML and Polylang for the admin-facing strings; the tweet content itself is whatever X returns, which is the original language of the tweet.
Caching plugin interactions
Page-level caching plugins (WP Rocket, WP-Optimize Premium, LiteSpeed Cache) cache the rendered feed HTML, which is actually fine because the plugin’s cron refreshes the underlying transient and a new cache build happens on the next purge. If your cache TTL is shorter than the cron interval, you’ll always serve fresh tweets. If it’s longer, you may serve stale tweets until the page cache rebuilds; that’s a tuning question, not a bug.
Edge cases that bite
- X login expirations: if the connected X account is logged out (password change, security event), the plugin will start returning 401s on cron. The settings page surfaces this with a banner.
- Twitter rebrand artefacts: the API still uses
api.twitter.comeven though the brand is X. The plugin handles both, but if you’re filtering URLs in your CSP, allow bothtwitter.comandx.com. - Privacy mode and proxies: if you sit behind a strict outbound proxy (some intranet deployments), the plugin’s API calls won’t reach X. The cron will silently fail, the cache will go stale, and you’ll see the last-good feed indefinitely. The settings page has an "Errors" panel that surfaces this once you go look.
Pricing and licensing
Smash Balloon sells Custom Twitter Feeds Pro in four tiers: Personal (one site), Business (five sites), Developer (ten sites), and Elite (the All Access Bundle which includes every Smash Balloon plugin and unlimited sites). The Pro Elite build is what you’d buy for the Elite tier.
Standard GPL: you can install it on as many sites as you want, you get the same admin UI and the same hook layer as the official release. What you don’t get from us is direct Smash Balloon support, but the in-plugin documentation is good and the hook layer is stable enough that most edge cases can be solved with the filters above.
If you’re running the Smash Balloon trinity (Twitter, Instagram, Facebook), the Elite/All Access pricing is the only one that makes sense. Bought individually each plugin’s Elite tier is about the price of the bundle, so the bundle.
Frequently asked questions
Does it still work now that Twitter is called X?
Yes. The plugin’s marketing has always been "Custom Twitter Feeds" because that was the platform’s name when it launched, but the API endpoints, the OAuth flow, and the rendering all work the same after the rebrand. X’s API tier changes affect quota, not whether the plugin functions.
Can I show tweets from someone who isn’t me?
Yes for user timelines (anyone’s public account), hashtag feeds, search feeds, and list feeds (any public list). No for the home timeline and mentions, both of which require you to be logged in as the target account when authorising the plugin.
Do I need a paid X API plan?
For a single low-traffic feed (one site, default daily refresh), the free tier of X’s API is usually enough. For multi-feed or high-frequency sites, you’ll want the Basic paid tier. The plugin doesn’t push you into a tier; it lets you pick the cron interval and the per-request batch size so you can fit any quota.
What happens if my X account gets suspended?
Cron starts returning errors, the cache stops getting refreshed, and visitors keep seeing the last-cached tweets until you reconnect or change accounts. The plugin doesn’t delete the cache on error, which is intentional; a broken account shouldn’t break your site.
Can I render multiple feeds on the same page?
Yes. Each feed is its own shortcode, and the front-end script is written to handle many feed instances on one page without conflicting. There’s no hard cap; performance is a function of how many tweets each feed loads, not how many feeds exist.
Does it work with page builders?
It ships with native widgets for Elementor and Divi, and the shortcode and Gutenberg block both work in every other major builder. I’ve tested it with the Beaver Builder, Bricks, and Oxygen shortcode modules and seen no issues.
Will it slow down my pages?
On a page view it’s effectively free: the rendered HTML is read from a transient and shipped with the page. The only cost is the CSS and JS the plugin enqueues, which together are about 30 KB compressed. The API call cost happens entirely in WP-Cron, not on visitor requests.
Can I customise the look without writing CSS?
Mostly yes. The Feed Builder’s Customize panel exposes colours, spacing, fonts, and per-element toggles for everything visitor-facing. CSS overrides are for the long-tail cases where you want to match a very specific theme aesthetic. The plugin exposes stable class names on every element, so targeting them in your theme stylesheet is straightforward.
Does it support RTL languages?
Yes. The CSS includes RTL stylesheet variants, and Arabic/Hebrew tweet text renders correctly because the tweet body is just plain text rendered with the browser’s bidi handling.
How does it compare to embed.x.com (the official embed)?
Three differences. First, the X embed is an iframe; the plugin renders HTML directly into your DOM, which is faster and stylable. Second, the X embed talks to X on every page view; the plugin caches and only refreshes in the background. Third, the X embed gives you one layout (X’s design); the plugin gives you four templates plus per-element controls. The X embed is fine for a one-off "embed this tweet" use case. For anything bigger than one tweet, the plugin wins.
Will it survive future X API changes?
History suggests yes. Smash Balloon’s track record across the Facebook, Instagram, and YouTube plugins is that they update within days or weeks of any breaking API change. The Twitter plugin has gone through the v1.1-to-v2 transition and the API tier reshuffle in 2023 without permanently breaking. the GPL-licensed version follows the same release cadence as the official; you get updates when Smash Balloon ships them.
Final thoughts
Twitter/X embeds are a deceptively annoying problem. The "drop an iframe in your page" answer that worked in 2018 is a worse answer in 2026; it’s slow, it’s ugly, and it depends entirely on whatever X feels like serving you. Custom Twitter Feeds Pro Elite is the alternative that holds up: cache the data, style it like your theme, expose hooks for the cases the UI doesn’t cover, and ship the same builder across the Smash Balloon trinity so you only learn it once.
The plugin’s two strongest qualities, in my reading, are the cache layer and the developer surface. The cache layer means you can put a feed on a homepage that gets a million views a month without thinking about X’s quotas. The developer surface means the rare edge cases (custom carousel breakpoints, role-based settings access, tweet-text rewrites for compliance) are all solvable with three lines of code instead of forking the plugin.
If you already run Instagram Feed Pro or Custom Facebook Feed Pro and you’ve been holding off on adding Twitter because the X API made you nervous, you can stop holding off. Same plugin family, same admin, same hooks. The only thing different is which platform’s tokens you store and which icon shows in the header.
If you measure your site’s traffic and conversions with something like MonsterInsights or collect leads with WPForms, pairing those with a social-feed plugin makes the marketing loop complete: people see what others are saying, sign up to hear more, and you can attribute the path back. And if you also want WordPress to automatically push new posts out to X / Twitter (not just embed the feed), check out our Social Auto Poster walkthrough which covers the outbound side of the same loop. Pick a Smash Balloon plugin for whichever channel you actually post on, and use the same builder family for the rest as they come online.
Custom Twitter Feeds Pro Elite is available as a GPL download from the GPL Times store. The build ships with the Elite/All Access licence already wired up, so you get every feature out of the box without typing a key. Drop it on a staging site, try the Builder for fifteen minutes, and you’ll know whether it fits.