91³Ô¹ÏÍø

Watch CBS News

Republican Clay Fuller sworn into House after winning Georgia's 14th District special election

Republican Clay Fuller was sworn into the U.S. House on Tuesday night, officially taking office as the new representative for Georgia's 14th Congressional District.

Fuller won a special election last week to fill the seat previously held by former Rep. Marjorie Taylor Greene, defeating Democrat Shawn Harris by about 12 percentage points, according to poll results. The margin marked a notable shift compared to recent presidential performance in the district.

The current House now stands at 431 members: 217 Republicans, 213 Democrats, and one independent who caucuses with Republicans.

The 14th District, in northwest Georgia, has leaned strongly Republican in recent elections. President Donald Trump won the district by 37 points in 2024, and Greene won it by 29 points in 2024 and nearly 32 points in 2022.

House Speaker Johnson Swears In Clay Fuller To Replace Marjorie Taylor Greene
WASHINGTON, DC - APRIL 14: U.S. Speaker of the House Rep. Mike Johnson (R-LA) (R) holds a ceremonial swearing-in of Rep. Clay Fuller (R-GA) (L) as Fuller's wife Kate (C) looks on at the U.S. Capitol on April 14, 2026 in Washington, DC. Fuller won a special runoff election to fill the seat that was vacated by former Rep. Marjorie Taylor Greene (R-GA) and will be serving the remainder of the current term. Alex Wong / Getty Images

Fuller's narrower win represented one of the larger swings in a House special election during Trump's second term, compared with recent cycles.

After being sworn in, Fuller : "I will uphold and defend the Constitution every single day I serve in Congress. Thank you, voters of GA-14, for trusting me to fight for you and our freedoms. Let's get to work."

He also said he plans to cosponsor his first piece of legislation, the "Save America Act," focused on election integrity, and said he looks forward to working with President Donald Trump on the issue.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });