SEO Agency · Brampton, ON
SEO Agency · Abbotsford, BC

An SEO Agency Your dedicated
Brampton SEO strategistBuilt for Abbotsford.

Stop guessing what works in Abbotsford. Start ranking with a Canadian SEO team that has built search authority in some of the country's most competitive verticals since 2019, from technical SEO and local search to link building, keyword research, and content.

SEO for Construction
500+SEO for E-commerce
Websites ranked since 2019SEO for B2B SaaS
SEO for Plastic Surgeons
9-figure+SEO for Local Services
Revenue generated through SEOSEO for Dentists
SEO for Lawyers
0SEO for Plumbers
Long-term contractsSEO for Construction
SEO for E-commerce
SEO for B2B SaaS
SEO for Plastic SurgeonsAbbotsford SEO strategist - dedicated SEO expert from SEO Montreal providing technical SEO, local SEO, and search engine optimization services to Abbotsford businesses since 2019
SEO for Local Services
Your dedicated Abbotsford SEO strategist
SEO for Lawyers
SEO for Plumbers
SEO for ConstructionBrampton is the operational hub of the GTA's logistics, trucking, and light manufacturing economies, with one of the largest concentrations of independent trucking companies in North America and a small-business base that reflects the city's status as Canada's most diverse mid-sized city. Brampton's search market behaves accordingly: hyperlocal queries from a population that searches in multiple languages, B2B logistics buyers comparing carriers across the corridor, and a consumer economy serving more than 700,000 residents. We build Brampton SEO campaigns that capture all three audiences, with technical and content strategies tuned to the realities of competing in one of the fastest-growing cities in the country.
SEO for E-commerce
SEO for B2B SaaS
SEO for Plastic Surgeons
SEO for Local Services
Real numbers, real sites
SEO for Dentists
Results from sites we
SEO for Lawyersactually
built.
SEO for Plumbers
Traffic numbers pulled directly from SEMrush on live client sites. Identities protected under NDA. Specific case-study names available on the call.
3.4K

Breakout growth to
360K/mo

Results from sites we 360.4Kactually traffic/mo built.

28.4K

Traffic numbers pulled directly from SEMrush on live client sites. Identities protected under NDA. Specific case-study names available on the call. keywords

FR · US · IN
SEO Abbotsford case study - e-commerce client organic traffic growth chart from search engine optimization campaign managed by SEO Montreal
Abbotsford SEO agency case study - online store breakout traffic growth through technical SEO and content optimization
SEO services Abbotsford case study - dating platform organic search traffic growth from local SEO and link building
Abbotsford SEO firm case study - directory site keyword rankings and organic traffic growth from technical SEO and content strategy
High-intent SEO for law firms competing on practice-area, jurisdiction, and city-level queries with conversion-focused landing pages and authoritative content.
64.2K traffic/mo
View legal SEO
12.9K keywords
CA · FR · USSEO for Plastic Surgeons
Compliance-aware SEO for cosmetic surgery practices in regulated medical markets, with content built for high-ticket consultation funnels and local search.
View cosmetic SEO
SEO for Plumbers
Service-area SEO and local pack rankings for residential and commercial plumbing companies in competitive metro markets, with neighborhood-level keyword targeting.

SEO playbooks built for specific verticals.SEO for Construction

We don't run a generic playbook on every client. Years of working in tough Canadian verticals means we have industry-specific link sources, content patterns, and competitive intelligence for the businesses we serve in Abbotsford and beyond.

SEO for general contractors, builders, and construction firms competing in B2B markets and high-value commercial bid pipelines across Canadian metros.


On-page SEO is where strategy turns into ranking. For every Brampton client, we optimize title tags, meta descriptions, heading hierarchy, internal linking, and schema markup on the pages that matter most for organic traffic. Content optimization goes deeper: we evaluate topical depth, semantic coverage, content freshness, and how well each page answers the search intent behind its target keyword. If a page is competing in a Brampton query and isn't ranking, it's almost always missing something the top results already have. We rebuild thin pages, expand strong ones, fix internal linking flow, and add the on-page signals search engines use to understand what each page is about and which Brampton queries it should win. in Abbotsford.

The full picture of what our Abbotsford SEO services include, and what to expect from working with our team. Click through if you want the depth, skip if you don't.

What do the first 90 days with our Brampton SEO team look like?
+
Technical SEO is the foundation that makes everything else work. For a Abbotsford website, our technical SEO services cover site speed and Core Web Vitals, mobile optimization, crawl budget, indexation hygiene, schema markup, internal linking architecture, canonicalization, hreflang for bilingual sites, and structured data for local search. Most Abbotsford businesses we audit have at least three blocking technical issues limiting how well their content can rank. We start every Abbotsford SEO engagement with a deep technical audit, fix the high-impact issues first, then layer on content and link building once the foundation is solid. Without technical SEO, even the best content and the cleanest backlinks will underperform in the Abbotsford search results.
Local SEO is what gets your business into the Google Map Pack and the local results Abbotsford searchers see when they look for nearby services. Our local SEO services for Abbotsford clients include Google Business Profile optimization, local citation building, NAP consistency across directories, neighborhood and suburb-level keyword targeting, review acquisition strategies, and location-based landing pages where they make sense. For service-area businesses, we map your customer geography to the actual neighborhoods of Abbotsford so you rank in each one, not just the broad city query. Local SEO compounds over time: every citation, review, and locally relevant backlink makes the next ranking improvement easier. Most Abbotsford verticals are won or lost in local search.Common questions
Everything you'd ask before hiring an
SEO agency in Brampton
Link building is the part of SEO most Abbotsford agencies either oversimplify or skip entirely. Our approach combines digital PR, niche edits, industry-specific outreach, and editorial placements on real publications and trusted Canadian sites. We don't buy spammy links, run private blog networks, or chase domain authority for its own sake. Every backlink we build is one we can show you the source of, the relevance of, and the keyword authority it carries. For competitive Abbotsford verticals like legal services, dental, plastic surgery, or e-commerce, link building is often the deciding factor between a top-three ranking and page two. We measure progress in qualified referring domains and topical authority, not raw link counts.
How long does SEO take to work in Brampton?
+
Keyword research for a Abbotsford business is more than running Semrush and grabbing the top search volumes. We start by mapping your service offer to the actual queries Abbotsford customers are typing, separating commercial keywords from informational ones, and identifying long-tail and neighborhood-level variations your competitors ignore. We analyze the Abbotsford SERPs for each priority keyword to understand what actually ranks: local pack, service pages, blog content, or review-style listicles. Then we layer in competitor research to surface the keyword gaps your Abbotsford competitors are missing. The output is a prioritized keyword strategy with clear targets, search intent classifications, and content briefs ready for our team to execute against.
Do you only work with Brampton businesses?

,
plastic surgeons
, construction firms
Yes. Local SEO is a core part of every Abbotsford engagement we run. Google Business Profile optimization, local citation building, NAP consistency across directories, neighborhood-level keyword targeting, review acquisition, and local pack ranking work are all included in our standard Abbotsford SEO services. For service-area businesses, we map your customer geography to the actual neighborhoods of Abbotsford and build content that ranks in each one, not just in the broad city-level query. Local SEO compounds: every citation and locally relevant backlink makes the next ranking improvement easier.,
e-commerce brands
,
B2B companies . When we work with a Brampton business in one of these verticals, you get the benefit of our industry-specific link sources, content patterns, and competitive intelligence, not a generic playbook adapted on your dime.
Engagements typically start at a few thousand dollars per month, scaling with the competitiveness of your industry, your local market, and the scope of the work. Abbotsford verticals like legal services, plastic surgery, and competitive e-commerce sit at the higher end. Local services and B2B SaaS often run leaner. SEO is an investment, not an expense. We'll show you the projected ROI on the strategy call, with the search volume, keyword difficulty, and traffic potential for your specific Abbotsford market, so you can decide if the math works for your business.
What's the contract structure? Month-to-month. Cancel with 30 days' written notice. We don't believe in locking clients into long contracts because the work should speak for itself. If we're not delivering, you shouldn't have to wait out a contract to leave. Most Brampton clients stay because the results justify it, not because they have to.
Three things. First, we work the technical SEO layer most Abbotsford agencies skip or outsource: site speed, schema markup, indexation, internal linking, the foundation work that determines whether your content can actually rank. Second, we report transparently on what's actually moving (not vanity dashboards): organic traffic, keyword positions, conversions, qualified leads. Third, we've successfully ranked sites in some of the most competitive and regulated verticals in Canada, including legal, dental, plastic surgery, e-commerce, and B2B SaaS. If your current Abbotsford SEO agency can't show you the math behind their recommendations, that's not SEO. That's astrology.
What kind of reporting do Brampton clients get? Monthly reports built around what actually moved: organic traffic, keyword rankings with positions, goal completions, conversions, and the specific work we shipped that month. No vanity dashboards or screenshot graphs without context. You'll have direct access to your strategist and to live keyword and traffic dashboards between reports. If your Brampton business needs more granular reporting for an internal team or board, we'll build a custom report tailored to what they need to see.
Yes. SEO Montreal is fully bilingual. If your Abbotsford business serves French-speaking buyers, or you want a parallel French SEO strategy alongside this English campaign, we handle both. Our French content and link strategies are native, not translated.
Yes. Over the years we've built dedicated SEO playbooks for several Canadian verticals, including dentists , lawyers, plastic surgeonsReady to rank in , Bramptonplumbers?, Book a free 30-minute call.construction firms , No obligation. No sales pitch. Just a concrete read on your Brampton site and an SEO plan you can act on with or without us. Whether you need technical SEO, local SEO, or a full Brampton search strategy, we'll show you what's possible.e-commerce brands , Book your 30-min call B2B companies , and SaaS platformsEvery call taken personally · Limited slots each week. When we work with a Abbotsford business in one of these verticals, you get the benefit of our industry-specific link sources, content patterns, and competitive intelligence, not a generic playbook adapted on your dime.
Month-to-month. Cancel with 30 days' written notice. We don't believe in locking clients into long contracts because the work should speak for itself. If we're not delivering, you shouldn't have to wait out a contract to leave. Most Abbotsford clients stay because the results justify it, not because they have to.
(function() { var root = document.querySelector('.smio-city-lp'); if (!root) return; // FAQ accordion root.querySelectorAll('.smio-faq-q').forEach(function(btn) { btn.addEventListener('click', function() { var item = btn.parentElement; var isOpen = item.classList.contains('smio-open'); root.querySelectorAll('.smio-faq-item').forEach(function(i) { i.classList.remove('smio-open'); }); if (!isOpen) item.classList.add('smio-open'); }); }); // Reveal on scroll if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('smio-visible'); observer.unobserve(entry.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' }); root.querySelectorAll('.smio-reveal').forEach(function(el) { observer.observe(el); }); } else { root.querySelectorAll('.smio-reveal').forEach(function(el) { el.classList.add('smio-visible'); }); } })();
Monthly reports built around what actually moved: organic traffic, keyword rankings with positions, goal completions, conversions, and the specific work we shipped that month. No vanity dashboards or screenshot graphs without context. You'll have direct access to your strategist and to live keyword and traffic dashboards between reports. If your Abbotsford business needs more granular reporting for an internal team or board, we'll build a custom report tailored to what they need to see.


Articles
SEO in Montreal
Contact Us
📩
[email protected]
Analyze your website for free
/* Please move these styles to your css file or just keep them here */ #so-form { margin: 10px!important; } #so-fieldswrapso1768693134 { width: 100%!important; max-width: 300px!important; } .so-fieldso1768693134 { background-color: #FFFFFF!important; border: 1px solid #dbdfe9!important; border-radius: 11px !important; color: #4b5675!important; padding: 7px 12px!important; font-size: 18px!important; box-sizing: border-box !important; height: 45px!important; width: 100%!important; display: block!important; margin-top: 0px!important; margin-bottom: 15px!important; } .so-fieldso1768693134::placeholder { color: #99a1b7!important; } @media screen and (max-width: 345px){ .so-fieldso1768693134 { min-width: 100px!important; } } @media screen and (max-width: 500px){ .so-fieldso1768693134 { font-size: 14px !important; height: 40px !important; margin-bottom: 10px!important; padding: 7px 10px!important; } #so-submitso1768693134 { font-size: 14px !important; height: 40px !important; padding: 8px 20px !important; } #so-fieldswrapso1768693134 { width: 100%!important; max-width: 100%!important; padding: 0 10px!important; } #so-boxso1768693134 { width: 100%!important; padding: 0!important; } } #so-submitso1768693134 { background-color: #37b594!important; border: 1px solid #37b594!important; color: #ffffff!important; border-radius: 11px !important; text-decoration: none!important; cursor: pointer!important; box-sizing: border-box !important; height: 45px!important; font-size: 18px!important; line-height: 18px!important; display: block!important; padding: 8px 50px!important; margin: 10px 0!important; width: 100%!important; transition: background-color 0.3s ease!important; } #so-submitso1768693134:hover { background-color: #2f9d7f!important; border-color: #2f9d7f!important; } .so-container { width: 100%; text-align: center; } .so-widget-form { display: inline-block !important; width: 100%!important; max-width: 300px!important; } @media screen and (max-width: 500px){ .so-widget-form { max-width: 100%!important; } } #so-boxso1768693134 { display: inline-block; width: auto!important; } #so-titleso1768693134 { margin-bottom: 5px; font-size: 26px !important; color: #000000 !important; } @media screen and (max-width: 500px){ #so-titleso1768693134 { font-size: 18px !important; padding: 0 10px!important; } #so-paragraphso1768693134 { font-size: 12px !important; padding: 0 10px!important; } #so-consentso1768693134 span { font-size: 10px !important; } } #so-paragraphso1768693134 { margin-bottom: 10px; font-size: 14px !important; color: #78829d !important; }
function soSubmit(el) { if (!soFormValidate(el)) { //e.preventDefault(); return false; } const behaviour = el.getAttribute('data-behaviour'); soBody = document.getElementsByTagName("body")[0]; soBodyOriginalStyleHeight = soBody.style.height; soBodyOriginalStyleOverflow = soBody.style.overflow; const element = document.createElement("input"); element.setAttribute("type", "hidden"); element.setAttribute("name", "referrer"); element.setAttribute("value", window.location.href); el.appendChild(element); if (behaviour == 'new_tab') return true; if (behaviour == 'modal') return soSubmitModal(el); if (behaviour == 'be_in_touch') return soSubmitBeInTouch(el); if (behaviour == 'redirect') return soSubmitRedirect(el); } function soFormValidate(el) { const domain = el.querySelector('input[name="domain"]'); const email = el.querySelector('input[name="email"]'); const phone = el.querySelector('input[name="phone"]'); const firstName = el.querySelector('input[name="first_name"]'); const lastName = el.querySelector('input[name="last_name"]'); const custom = el.querySelector('input[name="custom_field"]'); const consent = el.querySelector('input[name="consent"]'); if (0 == domain.value.length) return alert(domain.getAttribute("data-validation")), !1; if (domain.value = domain.value.trim().replace(/\/$/, ""), !domain.value.match(/^(https?:\/\/)?[a-z\d\-]{1,62}\..*/i)) return alert(domain.getAttribute("data-validation")), !1; if (null != firstName && 0 == firstName.value.length) return alert(firstName.getAttribute("data-validation")), !1; if (null != lastName && 0 == lastName.value.length) return alert(lastName.getAttribute("data-validation")), !1; if (null != email) { if (0 == email.value.length) return alert(email.getAttribute("data-validation")), !1; //var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; const regex = /^(([^ <
>()[\]\.,;:\s@\"]+(\.[^ <
>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^ <
>()[\]\.,;:\s@\"]+\.)+[^ <
>()[\]\.,;:\s@\"]{2,})$/i; if (!regex.test(email.value)) return alert(email.getAttribute("data-validation")), !1; } if (null != phone && 7 > phone.value.length) return alert(phone.getAttribute("data-validation")), !1; if (null != custom && 0 == custom.value.length) return alert(custom.getAttribute("data-validation")), !1; if (null != consent && false === consent.checked) return alert(consent.getAttribute("data-validation")), !1; setTimeout(function () { el.reset(); }, 50); return true; } function soSubmitModal(el) { const modalWrapper = document.createElement("div"); const button = el.querySelector('input[name="button"]'); let html = " <
style type=\"text/css\">\n" + " @media (max-width:500px) { #so-widget-modal-content { width:100% !important; height:100% !important; margin-top:50px !important; } }\n" + " @media (max-width:500px) and (max-height:550px) { #so-widget-modal-content { height:100% !important;} }\n" + " @media (min-height:601px) and (max-height:750px) and (min-width:501px) { #so-widget-modal-content { margin-top:100px !important; } }\n" + " @media (max-height:600px) and (min-width:501px) { #so-widget-modal-content { margin-top:80px !important; } }\n" + " #iframe-wrapper {width: 100%;height: 100%;-webkit-overflow-scrolling: touch !important}\n" + " #iframe-wrapper iframe {height: 100%;width: 100%;}\n" + " > \n" + "Analyze your website for free<

div id=\"so-widget-modal-overlay\" style=\"position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); display:none; opacity:0; transition:opacity 0.3s ease;\">\n" + "\t\t\t <
div id=\"so-widget-modal-content\" style=\"position:relative; width:80%; max-width: 1250px; height:80%; margin:120px auto 0; background:#fff;\">\n" + "\t\t\t\t <
div style=\"width:100%; height:50px; position:absolute; top:-50px; background:white;\">\n" + "\t\t\t\t\t <
span id=\"so-widget-modal-title\" style=\"position:absolute; left:15px; top:15px; font-size:16px; font-weight:bold; color:#000000 !important;\"> >\n"; if (null != button) { const styles = window.getComputedStyle(el.querySelector('input[type="submit"]')); html += "\t\t\t\t\t <

a href=\""+button.value+"\" id=\"so-widget-modal-button\" style=\"display: inline-block;position: absolute;top: 3px;right: 0;margin-right: 50px;text-decoration: none;background-color: "+styles.backgroundColor+";border: 1px solid "+styles.backgroundColor+";color: "+styles.color+" !important;border-radius: 3px;font-size: 19px;padding: 8px 50px;height: 27px;box-sizing: content-box;\">"+button.getAttribute("title")+"Get a clear overview of your site’s SEO performance, generated instantly and with no obligation.>\n"; } html += "\t\t\t\t\t <

span onclick=\"closeSoModal();\" style=\"display:inline-block; width:16px; height:16px; position:absolute; top:15px; right:15px; cursor:pointer; background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAowAAAKMB8MeazgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAB5SURBVDiNrZPRCcAwCEQfnUiySAZuF8kSWeH6Yz8KrQZMQAicJ+epAB0YwAmYJKIADLic0/GPPCbQAnLznCd/4NWUFfkgy1VjH8CryA95ApYltAiTRCZxpuoW+gz9WXE6NPeg+ra1UDIxGlWEObe4SGxY5fIxlc75Bkt9V4JS7KWJAAAAAElFTkSuQmCC59ef34356faa7edebc7ed5432ddb673d'); opacity:0.6;\"> >\n" + "\t\t\t\t >\n" + " <
div id=\"iframe-wra pper\">\n" + "\t\t\t\t \n" + "\t\t\t
\n" + "\t\t\t
\n" + "\t\t>"; modalWrapper.setAttribute('style', 'position:absolute; top:0; left:0; width:100%; z-index:9999999'); modalWrapper.setAttribute('id', 'so-modal-wrapper'); modalWrapper.innerHTML = html; document.body.appendChild(modalWrapper); let isMobile = false; if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)| em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) isMobile = true; if (isMobile) { el.querySelector('input[name="type"]').value = 'web' if (null != button && 0 !== button.value.length) document.getElementById('so-widget-modal-title').style.display = "none"; } const domain = el.querySelector('input[name="domain"]').value; const soOverlay = document.getElementById('so-widget-modal-overlay'); soOverlay.style.display = "block"; document.getElementById('so-widget-modal-title').innerText = el.getAttribute("data-title")+domain; soBody.style.height = '100%'; soBody.style.overflow = 'hidden'; setTimeout(function () { soOverlay.style.opacity = 1; }, 50); re turn true; } function soSubmitBeInTouch(el) { const iframe = document.createElement("iframe"); const element = document.createElement("input"); element.setAttribute("type", "hidden"); element.setAttribute("name", "be_in_touch"); element.setAttribute("value", "1"); el.appendChild(element); iframe.setAttribute('id', 'so-iframe'); iframe.setAttribute('name', 'so-iframe'); iframe.setAttribute('style', 'position:absolute; bottom:0; left:0; width:1px; height:1px; border:none'); document.body.appendChild(iframe); alert(el.getAttribute("data-touch")); return true; } function soSubmitRedirect(el) { el.removeAttribute('target'); return true; } function closeSoModal() { const soOverlay = document.getElementById('so-widget-modal-overlay'); soOverlay.style.opacity = 0; document.getElementById('so-modal-wrapper').remove(); setTi