What the World Cup teaches landlords about selling property
Property118

What the World Cup teaches landlords about selling property
As football fever sweeps the nation once again, fans across England are dreaming of that one unforgettable moment: the ball hitting the back of the net in the dying seconds of a World Cup final.
We are dreaming of the trophy, the glory, and the clinical strikes that write history.
But while England’s stars battle under the floodlights to convert their chances, there is another team quietly scoring spectacular, match-winning goals every single week.
Landlord Sales Agency (LSA) is out on the pitch, helping UK landlords navigate one of the toughest property markets and regulatory environments in decades.
When the pressure is on, we don’t just play the game, we find ways to win it.
Know your opposition!
Like any good team, our preparation for the game started long before kick-off. We have studied the UK housing sector and we know the weak points as well as the strengths and it affects how we play the game.
Founded by landlords, built for landlords, we know how to sell rental property without having to evict tenants first. We are experts in property, tenancies and compliance.
There isn’t a problem we cannot solve to help landlords exit the PRS when they call time on the PRS. We help landlords avoid VOID and collect rent until the final whistle is blown.
We secure buyers from day 1 to prevent any team pulling out of the game and our twelfth man is actually 30,000 men, women and companies who are chain free and ready to complete in 56 days.
Landlords still need to be realistic on price. You’re going to get 85% – 90% market value, and a huge part of that strategy is in listing properties for very attractive guide prices, but ultimately, with no fees, full management of the sale and a team that gets the job done faster and better than anyone else, it’s a no-brainer.
Pace that leaves the opposition behind
Every legendary England side relies on explosive pace from the start to the very end of the game. No kicking the ball down the pitch and hoping for the best, we’re all over every stage of the process.
By marketing properties instantly to a pre-vetted squad of motivated cash buyers, we cut through the noise to find the back of the net. We get landlords close to vacant possession property prices without having to evict tenants first.
While traditional high-street estate agents pass the paperwork sideways, we keep pushing from all sides to make sure all players deliver their best game.
How LSA outpaces the market:
- Zero wasted buildup: Fewer pointless viewings that stall your momentum.
- Instant attack: Direct access to investors and cash buyers ready to sign immediately.
- Beating the whistle: A radically accelerated route to legal completion.
Clinical finishing in front of the goal
When opportunity presents itself, you need a striker who can hit the target time and time again. But those moments don’t make themselves and nor do ours.
We don’t just list a property and hope for the right buyer to come along. We take the details to them, including cash buyers, property developers and other landlords in our database of 30K active buyers.
We give them all the information they need including tenancy details and funding options to buy as a turnkey option.
But that’s not all, we cover the whole field of play. By being the only company to offer a fully managed eviction process (if required), we can also market to owner-occupiers looking for vacant possession.
The result? LSA regularly hammers home sales close to full vacant possession value, saving landlords from the gruelling, expensive process of tenant eviction.
The anatomy of a clinical finish:
- No dropped points: Eliminates months of devastating lost rent.
- No empty stadiums: Avoids the bleeding cash of expensive void periods.
- Result-driven tactics: Keeps the financial pressure entirely off your shoulders.
Defence Wins Championships
While the strikers grab the headlines by scoring the winning goals, any World Cup manager will tell you that a rock-solid defence is what actually wins tournaments.
Right now, UK landlords are facing a relentless attack from shifting legislation. The Renters’ Rights Act has completely rewritten the rulebook; miss a single compliance document, mishandle a deposit, or fumble a proof of service, and you are suddenly facing a catastrophic “own goal”:
- Red cards from courts: Thrown-out possession claims and frozen sales.
- Heavy financial penalties: Costly compliance fines that drain your capital.
- Endless extra time: Being dragged into lengthy, exhausting legal disputes.
LSA is your world-class defensive line. We make sure you keep a clean sheet so you can focus on the win.
What the fans say
Football fans often talk about luck, a fortunate VAR decision, a deflection off the post, or a lucky bounce. But true champions know that lifting the trophy is never down to chance. It is the direct result of uncompromising dedication, tactical preparation, and relentless determination. We do more to make sure sales complete than any other estate agent.
We liaise with tenants, solicitors, surveyors and do whatever it takes to get the ball over the line.
This is what some fans say: “The purchaser wanted the tenant to vacate, I left this totally in the hands of Landlord Sales Agency, who served notice on the tenant. They were in contact with the tenant and helped her with relocation expenses.” Ian went on to say that everything was resolved without him having to contribute any input or deal with any stress. The tenant moved and the deal completed. “I am extremely happy with the service received and thoroughly recommend Landlord Sales Agency.”
Another landlord, Ali, echoed Ian’s sentiments, adding that he had an excellent experience using this company.
“Many other agents were not interested, as I had a tenant in situ, but these guys reassured me they would sell this place and contribute towards costs to help make this transaction as smooth as possible.” He followed up with saying we were a “5-star rating” and that “the business goes above and beyond to help!”
Think the golden days of the PRS are all over?
When you’re ready for the final whistle, we’ll help make sure you leave the game on your terms. Call us and we’ll make it happen.
(function(){var el=document.getElementById(“ts-607776b5-3f7b-431c-b5cc-fc304603fee3″);if(!el)return;var b=document.body,h=document.documentElement;var dark=b.classList.contains(“dark-mode”)||b.classList.contains(“dark”)||b.classList.contains(“night-mode”)||h.classList.contains(“dark”);if(!dark){var bg=window.getComputedStyle(b).backgroundColor,m=bg.match(/d+/g);if(m)dark=(m[0]*0.299+m[1]*0.587+m[2]*0.114)<128;}el.setAttribute("data-theme",dark?"dark":"light");if(window.turnstile&&el.childElementCount===0){try{window.turnstile.render(el,{sitekey:el.getAttribute("data-sitekey"),theme:el.getAttribute("data-theme")});}catch(e){}}})();
(function(){
var uid = “crm-form-ba09a29b”;
var form = document.getElementById(uid + ‘-form’);
var wrap = document.getElementById(uid);
var msg = wrap.querySelector(‘.crm-message’);
var totalPages = 1;
var curPage = 0;
// ── Conditional logic ────────────────────────────────────────────────
var condMap = {};
function getFieldValue(fieldId) {
var els = form.querySelectorAll(‘[name=”‘ + fieldId + ‘”], [name=”‘ + fieldId + ‘[]”]’);
if (!els.length) return ”;
var first = els[0];
if (first.type === ‘checkbox’ || first.type === ‘radio’) {
var checked = [];
els.forEach(function(el){ if (el.checked) checked.push(el.value); });
return checked.join(‘,’);
}
return first.value;
}
function evalRule(rule) {
var val = getFieldValue(rule.fieldId);
var cmp = rule.value;
switch (rule.operator) {
case ‘is': return val === cmp;
case ‘isnot': return val !== cmp;
case ‘greaterthan': return parseFloat(val) > parseFloat(cmp);
case ‘lessthan': return parseFloat(val) < parseFloat(cmp);
case 'contains': return val.indexOf(cmp) !== -1;
case 'startswith': return val.indexOf(cmp) === 0;
case 'endswith': return val.slice(-cmp.length) === cmp;
default: return false; // fail closed — mirror the CRM shared matcher
}
}
function applyConditionals() {
Object.keys(condMap).forEach(function(fieldId) {
var cond = condMap[fieldId];
var rules = cond.rules || [];
var match = cond.logicType === 'any'
? rules.some(evalRule)
: rules.every(evalRule);
var show = cond.actionType === 'show' ? match : !match;
var wrapper = form.querySelector('[data-field-id="' + fieldId + '"]');
if (!wrapper) {
var el = form.querySelector('[name="' + fieldId + '"], [name="' + fieldId + '[]"]');
if (el) wrapper = el.closest('.crm-field, .crm-half');
}
if (wrapper) wrapper.style.display = show ? '' : 'none';
});
}
form.addEventListener('change', applyConditionals);
form.addEventListener('input', applyConditionals);
applyConditionals();
// ── Multi-page navigation ────────────────────────────────────────────
// ── Submit ────────────────────────────────────────────────────────────
var submitBtn = form.querySelector('button[type=submit]');
var btnText = submitBtn ? submitBtn.textContent : 'Submit';
var crmApiUrl = "https://p118-crm-api.accent.sh";
function collectFormData() {
var data = {};
for (var j = 0; j < form.elements.length; j++) {
var el = form.elements[j];
if (!el.name) continue;
if (el.type === 'file') continue; // handled by uploadFiles()
if (el.type === 'radio' && !el.checked) continue;
if (el.type === 'checkbox') {
if (!el.checked) continue;
var k = el.name.replace('[]','');
data[k] = data[k] ? data[k].concat([el.value]) : [el.value];
} else {
data[el.name] = el.value;
}
}
// GF auto-substituted {user_agent} / {referer} on hidden fields
// at render time. We do the equivalent right before submit so
// fields whose default value carries these placeholders
// resolve to the browser's actual values rather than being
// stored as literal "{user_agent}" / "{referer}" strings.
// The last ARTICLE the visitor read (set client-side on post views by
// P118_Article_Views). Used to attribute the enquiry to the article
// even after navigating away or with a stripped/absent referer.
var lastPost = '';
try {
var lpm = document.cookie.match(/(?:^|;s*)p118_last_post=([^;]+)/);
if (lpm) lastPost = decodeURIComponent(lpm[1]);
} catch (e) {}
var subs = {
'{user_agent}': navigator.userAgent || '',
// Prefer the last article read; fall back to the (lossy) HTTP referer.
'{referer}': lastPost || document.referrer || '',
'{last_post}': lastPost || '',
'{embed_url}': window.location.href || '',
};
for (var name in data) {
if (!data.hasOwnProperty(name)) continue;
var v = data[name];
if (typeof v !== 'string') continue;
for (var tag in subs) {
if (v.indexOf(tag) !== -1) v = v.split(tag).join(subs[tag]);
}
data[name] = v;
}
// Agent/BDM attribution — read LIVE so it works even on a fully cached
// page (the browser always sees the real URL + cookie). URL ?ataid=/?cid=
// first, then the 30-day agent_id/cid cookies set by atat-tracking.php.
var _qp = new URLSearchParams(window.location.search);
var _ataid = _qp.get('ataid') || (document.cookie.match(/(?:^|;s*)agent_id=([^;]+)/) || [])[1] || '';
var _cid = _qp.get('cid') || (document.cookie.match(/(?:^|;s*)cid=([^;]+)/) || [])[1] || '';
if (_ataid) data.agent_id = decodeURIComponent(_ataid);
if (_cid) data.bdm_id = decodeURIComponent(_cid);
return data;
}
function uploadFiles(data) {
var fileInputs = form.querySelectorAll('input[type=file][data-crm-file-field]');
var uploads = [];
fileInputs.forEach(function(el) {
if (!el.files || !el.files[0]) return;
var fd = new FormData();
fd.append('file', el.files[0]);
var fieldName = el.name;
uploads.push(
fetch(crmApiUrl + '/public/forms/' + "08ceeaae-4809-444e-ba0f-88da5836c463" + '/upload', { method: 'POST', body: fd })
.then(function(r) {
if (!r.ok) throw new Error('File upload failed (' + r.status + ')');
return r.json();
})
.then(function(res) {
if (res.path) data[fieldName] = res.path;
else throw new Error(res.error || 'File upload failed');
})
);
});
return Promise.all(uploads).then(function() { return data; });
}
function submitFormData(data) {
var body = new FormData();
body.append('action', 'p118_crm_submit');
body.append('form_id', "08ceeaae-4809-444e-ba0f-88da5836c463");
body.append('data', JSON.stringify(data));
// Embed-page context for GF-style merge tags ({embed_url},
// {embed_post:post_title}, {embed_post:ID}). Captured PHP-side
// at render time, then echoed to JS so the submit fetch can
// forward to V2 as request headers.
body.append('embed_url', "");
body.append('embed_post_id', "0");
body.append('embed_post_title', "");
return fetch("https://www.property118.com/wp-admin/admin-ajax.php", { method: 'POST', body: body, credentials: 'same-origin' })
.then(function(r){ return r.json(); })
.then(function(res){
var p = res.data || res;
if (p && p.success) {
if (p.confirmationType === 'form' && p.nextFormId) {
return swapInNextForm(p.nextFormId, p.prefill || {});
}
if (p.confirmationType === 'redirect' && p.confirmationRedirectUrl) {
window.location.href = p.confirmationRedirectUrl;
} else {
form.style.display = 'none';
msg.className = 'crm-message success';
msg.innerHTML = p.confirmationMessage || 'Thank you for your submission.';
msg.style.display = 'block';
}
} else {
throw new Error((p && p.error) || 'Submission failed.');
}
});
}
// Replace this whole form widget with another form, rendered server-side
// with the carried-over values seeded in. Inline injected via
// innerHTML won’t run, so we re-create each script node to execute it
// (this is what wires up the new form’s submit / conditional logic).
function swapInNextForm(nextFormId, prefill) {
var rbody = new FormData();
rbody.append(‘action’, ‘p118_crm_render_form’);
rbody.append(‘form_id’, nextFormId);
rbody.append(‘prefill’, JSON.stringify(prefill || {}));
return fetch(“https://www.property118.com/wp-admin/admin-ajax.php”, { method: ‘POST’, body: rbody, credentials: ‘same-origin’ })
.then(function(r){ return r.json(); })
.then(function(res2){
var pd = res2.data || res2;
if (!pd || !pd.html) { throw new Error((pd && pd.error) || ‘Could not load the next form.’); }
var frag = document.createElement(‘div’);
frag.innerHTML = pd.html;
var parent = wrap.parentNode;
var nodes = [];
while (frag.firstChild) {
var node = frag.firstChild;
parent.insertBefore(node, wrap);
nodes.push(node);
}
parent.removeChild(wrap);
function reexec(old) {
var s = document.createElement(‘script’);
for (var a = 0; a < old.attributes.length; a++) {
s.setAttribute(old.attributes[a].name, old.attributes[a].value);
}
if (!old.src) { s.textContent = old.textContent; }
old.parentNode.replaceChild(s, old);
}
nodes.forEach(function(n){
if (n.tagName === 'SCRIPT') { reexec(n); }
else if (n.querySelectorAll) {
var scripts = n.querySelectorAll('script');
for (var k = 0; k < scripts.length; k++) { reexec(scripts[k]); }
}
});
var first = nodes[0];
try { if (first && first.scrollIntoView) first.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
});
}
form.addEventListener('submit', function(e){
e.preventDefault();
var data = collectFormData();
if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Processing…'; }
msg.style.display = 'none';
// Standard form (no payment)
uploadFiles(data)
.then(function(d) { return submitFormData(d); })
.catch(function(err){
if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = btnText; }
msg.className = 'crm-message error';
msg.textContent = err.message;
msg.style.display = 'block';
});
});
})();
The post What the World Cup teaches landlords about selling property appeared first on Property118.
View Full Article: What the World Cup teaches landlords about selling property
The Mortgage Works to pilot landlord EPC support package
Property118

The Mortgage Works to pilot landlord EPC support package
The Mortgage Works is offering free property assessments and cut-price borrowing to help landlords prepare for the proposed Energy Performance Certificate (EPC) standards from 2030.
For many of them, the first job may simply be working out what needs fixing.
The buy to let lender, which is part of Nationwide, will fund 1,000 assessments through retrofit specialist Eco Approach as part of an initial pilot.
Landlords will receive an estimate of how far a property is from achieving an Energy Performance Certificate rating of C, along with recommended improvements and indicative costs.
Landlord EPC insight
The lender’s head of buy to let, Dan Clinton, said: “We know many landlords are still grappling with the upcoming Minimum Energy Efficiency Standards, and our new assessment gives landlords clear insight into what is needed to meet their obligations.
“By having the free property assessments with Eco Approach, along with The Mortgage Works’ discounted Energy Efficiency Further Advance products, we aim to remove the uncertainty and some of the cost barriers.”
He added: “Improving energy efficiency isn’t just about meeting future standards, it can also enhance property values, boost rental yields and create more comfortable homes with lower energy bills for tenants.
“We’re committed to helping our landlord customers act now so they’re better prepared for the changes ahead.”
Landlords query EPC costs
The Mortgage Works found that 63% of landlords did not know how much it would cost to raise their properties to an EPC C rating.
Some 21% estimated that they would need to spend an average of up to £6,632, depending on the property’s current rating.
The lender says this would fall within the maximum borrowing available through its new further advance products.
Its latest buy to let report found that homes with EPC ratings of A or B achieved a 12.2% price premium against comparable D-rated properties. C-rated homes recorded a 3.7% uplift.
EPC exemptions assessed
TMW says the assessments will also cover possible EPC exemptions, available grants and support with arranging the work.
Also, the pilot would test demand before a possible wider launch to all its customers.
Its research found that 67% of landlords were unaware that properties would need to achieve a minimum C rating.
While 73% did not know when the requirements were expected to take effect in England and Wales.
More than half, 55%, said they would value help identifying the most cost-effective improvements and 50% wanted guidance on how to finance the work.
The post The Mortgage Works to pilot landlord EPC support package appeared first on Property118.
View Full Article: The Mortgage Works to pilot landlord EPC support package
Landbay, Kensington and Dudley cut landlord BTL mortgage rates
Property118

Landbay, Kensington and Dudley cut landlord BTL mortgage rates
Landlords buying, refinancing or reviewing existing borrowing have been offered lower BTL mortgage rates across standard, HMO, limited company and expat products.
Landbay, Kensington Mortgages and Dudley Building Society have all cut pricing, with the largest reduction reaching 110bps.
Landbay has reduced its rates by up to 17bps across its Premier range, the second round of cuts to those products during June.
Every five-year fixed Premier product for purchases and remortgages has been repriced with options at 75% loan-to-value now start at 4.45%.
Individual landlords and limited companies
The range covers standard properties and HMOs for borrowers with up to 15 mortgaged properties and is available to individual landlords and limited companies.
Five-year fixed remortgage products with a free valuation now start at 4.49% at 75% LTV.
Deals with a fixed fee, free valuation, assisted legal services and cashback begin at 5.39%.
Small HMO rates have fallen to 4.84%, while product transfers for existing Landbay borrowers start at 4.54%. Premier products carry a choice of fees ranging from zero to 5%.
Core mortgages are available on standard properties to individuals, limited companies and limited liability partnerships, with no restriction on portfolio size.
Specialist products cover holiday lets, HMOs, multi-unit freehold blocks and trading companies.
The lender’s sales and distribution director, Rob Stanton, said: “These latest cuts strengthen some of our most popular purchase, remortgage, product transfer and Small HMO options, ensuring brokers have access to highly competitive solutions across a broad range of landlord requirements.”
Kensington cuts rates by 25bps
Kensington Mortgages has cut selected buy to let rates by as much as 25bps across its Prime, Prime eKo, Core, HMO and multi-unit block ranges.
The changes apply at both 75% and 80% LTV.
In the Prime range, two-year fixed rates at 75% LTV now begin at 3.49% with a 5% fee.
Alternatives include 4.14% with a 3% fee and 5.63% without a fee.
Five-year Prime fixes at the same LTV start at 4.59% with a 5% fee.
More BTL mortgage deals
Other options are priced at 4.82% with a 3% fee, 5.12% with a £4,000 fee, 5.22% with a £1,499 fee and 5.34% with no fee.
Rates have also fallen across Kensington’s Prime HMO and multi-unit block products, which are available in England, Scotland and Wales.
Five-year fixes at 75% LTV now include a 4.84% rate with a 5% fee and a 5.09% rate carrying a 3% fee.
Prime eKo products, available on homes with an EPC rating of A, B or C, are priced 5bps below the corresponding standard Prime rates.
Free valuations remain available across Kensington’s residential and buy-to-let products.
Andy Bickers, the commercial director at Kensington, said: “These latest changes to our BTL range strengthen our proposition across a broad range of landlord needs, from standard investment properties through to HMOs and MUBs.”
Dudley BS reduction reaches 110bps
Dudley Building Society has reduced its buy to let and expat mortgage rates by up to 110bps.
The repricing covers purchase and remortgage cases, including two and five-year fixes, discounted products, residential interest-only mortgages and selected landlord deals.
A two-year residential expat mortgage at 75% LTV is now priced at 5.38%, down from 6.30%.
For landlords, Dudley’s five-year BTL fix at 80% LTV has been reduced from 6.40% to 5.63%.
The five-year expat buy to let product at 70% LTV now carries a rate of 5.68%, down from 6.30%.
Dudley’s head of intermediary relations, Paul Purewal, said: “These reductions represent a notable enhancement across a number of our key residential, buy-to-let and expat products, helping brokers access more competitive options for a wide range of clients.”
For assistance with any type of buy to let (BTL), property or commercial finance please complete the contact form below:
How can I help you?
(function(){var el=document.getElementById(“ts-56e3e3c4-4400-4e49-8f5a-211f6f540e49″);if(!el)return;var b=document.body,h=document.documentElement;var dark=b.classList.contains(“dark-mode”)||b.classList.contains(“dark”)||b.classList.contains(“night-mode”)||h.classList.contains(“dark”);if(!dark){var bg=window.getComputedStyle(b).backgroundColor,m=bg.match(/d+/g);if(m)dark=(m[0]*0.299+m[1]*0.587+m[2]*0.114)<128;}el.setAttribute("data-theme",dark?"dark":"light");if(window.turnstile&&el.childElementCount===0){try{window.turnstile.render(el,{sitekey:el.getAttribute("data-sitekey"),theme:el.getAttribute("data-theme")});}catch(e){}}})();
(function(){
var uid = “crm-form-9314eca3″;
var form = document.getElementById(uid + ‘-form’);
var wrap = document.getElementById(uid);
var msg = wrap.querySelector(‘.crm-message’);
var totalPages = 1;
var curPage = 0;
// ── Conditional logic ────────────────────────────────────────────────
var condMap = {};
function getFieldValue(fieldId) {
var els = form.querySelectorAll(‘[name=”‘ + fieldId + ‘”], [name=”‘ + fieldId + ‘[]”]’);
if (!els.length) return ”;
var first = els[0];
if (first.type === ‘checkbox’ || first.type === ‘radio’) {
var checked = [];
els.forEach(function(el){ if (el.checked) checked.push(el.value); });
return checked.join(‘,’);
}
return first.value;
}
function evalRule(rule) {
var val = getFieldValue(rule.fieldId);
var cmp = rule.value;
switch (rule.operator) {
case ‘is': return val === cmp;
case ‘isnot': return val !== cmp;
case ‘greaterthan': return parseFloat(val) > parseFloat(cmp);
case ‘lessthan': return parseFloat(val) < parseFloat(cmp);
case 'contains': return val.indexOf(cmp) !== -1;
case 'startswith': return val.indexOf(cmp) === 0;
case 'endswith': return val.slice(-cmp.length) === cmp;
default: return false; // fail closed — mirror the CRM shared matcher
}
}
function applyConditionals() {
Object.keys(condMap).forEach(function(fieldId) {
var cond = condMap[fieldId];
var rules = cond.rules || [];
var match = cond.logicType === 'any'
? rules.some(evalRule)
: rules.every(evalRule);
var show = cond.actionType === 'show' ? match : !match;
var wrapper = form.querySelector('[data-field-id="' + fieldId + '"]');
if (!wrapper) {
var el = form.querySelector('[name="' + fieldId + '"], [name="' + fieldId + '[]"]');
if (el) wrapper = el.closest('.crm-field, .crm-half');
}
if (wrapper) wrapper.style.display = show ? '' : 'none';
});
}
form.addEventListener('change', applyConditionals);
form.addEventListener('input', applyConditionals);
applyConditionals();
// ── Multi-page navigation ────────────────────────────────────────────
// ── Submit ────────────────────────────────────────────────────────────
var submitBtn = form.querySelector('button[type=submit]');
var btnText = submitBtn ? submitBtn.textContent : 'Submit';
var crmApiUrl = "https://p118-crm-api.accent.sh";
function collectFormData() {
var data = {};
for (var j = 0; j < form.elements.length; j++) {
var el = form.elements[j];
if (!el.name) continue;
if (el.type === 'file') continue; // handled by uploadFiles()
if (el.type === 'radio' && !el.checked) continue;
if (el.type === 'checkbox') {
if (!el.checked) continue;
var k = el.name.replace('[]','');
data[k] = data[k] ? data[k].concat([el.value]) : [el.value];
} else {
data[el.name] = el.value;
}
}
// GF auto-substituted {user_agent} / {referer} on hidden fields
// at render time. We do the equivalent right before submit so
// fields whose default value carries these placeholders
// resolve to the browser's actual values rather than being
// stored as literal "{user_agent}" / "{referer}" strings.
// The last ARTICLE the visitor read (set client-side on post views by
// P118_Article_Views). Used to attribute the enquiry to the article
// even after navigating away or with a stripped/absent referer.
var lastPost = '';
try {
var lpm = document.cookie.match(/(?:^|;s*)p118_last_post=([^;]+)/);
if (lpm) lastPost = decodeURIComponent(lpm[1]);
} catch (e) {}
var subs = {
'{user_agent}': navigator.userAgent || '',
// Prefer the last article read; fall back to the (lossy) HTTP referer.
'{referer}': lastPost || document.referrer || '',
'{last_post}': lastPost || '',
'{embed_url}': window.location.href || '',
};
for (var name in data) {
if (!data.hasOwnProperty(name)) continue;
var v = data[name];
if (typeof v !== 'string') continue;
for (var tag in subs) {
if (v.indexOf(tag) !== -1) v = v.split(tag).join(subs[tag]);
}
data[name] = v;
}
// Agent/BDM attribution — read LIVE so it works even on a fully cached
// page (the browser always sees the real URL + cookie). URL ?ataid=/?cid=
// first, then the 30-day agent_id/cid cookies set by atat-tracking.php.
var _qp = new URLSearchParams(window.location.search);
var _ataid = _qp.get('ataid') || (document.cookie.match(/(?:^|;s*)agent_id=([^;]+)/) || [])[1] || '';
var _cid = _qp.get('cid') || (document.cookie.match(/(?:^|;s*)cid=([^;]+)/) || [])[1] || '';
if (_ataid) data.agent_id = decodeURIComponent(_ataid);
if (_cid) data.bdm_id = decodeURIComponent(_cid);
return data;
}
function uploadFiles(data) {
var fileInputs = form.querySelectorAll('input[type=file][data-crm-file-field]');
var uploads = [];
fileInputs.forEach(function(el) {
if (!el.files || !el.files[0]) return;
var fd = new FormData();
fd.append('file', el.files[0]);
var fieldName = el.name;
uploads.push(
fetch(crmApiUrl + '/public/forms/' + "b4348f3c-1c58-40d2-a4e1-f5ef3a585dcc" + '/upload', { method: 'POST', body: fd })
.then(function(r) {
if (!r.ok) throw new Error('File upload failed (' + r.status + ')');
return r.json();
})
.then(function(res) {
if (res.path) data[fieldName] = res.path;
else throw new Error(res.error || 'File upload failed');
})
);
});
return Promise.all(uploads).then(function() { return data; });
}
function submitFormData(data) {
var body = new FormData();
body.append('action', 'p118_crm_submit');
body.append('form_id', "b4348f3c-1c58-40d2-a4e1-f5ef3a585dcc");
body.append('data', JSON.stringify(data));
// Embed-page context for GF-style merge tags ({embed_url},
// {embed_post:post_title}, {embed_post:ID}). Captured PHP-side
// at render time, then echoed to JS so the submit fetch can
// forward to V2 as request headers.
body.append('embed_url', "");
body.append('embed_post_id', "0");
body.append('embed_post_title', "");
return fetch("https://www.property118.com/wp-admin/admin-ajax.php", { method: 'POST', body: body, credentials: 'same-origin' })
.then(function(r){ return r.json(); })
.then(function(res){
var p = res.data || res;
if (p && p.success) {
if (p.confirmationType === 'form' && p.nextFormId) {
return swapInNextForm(p.nextFormId, p.prefill || {});
}
if (p.confirmationType === 'redirect' && p.confirmationRedirectUrl) {
window.location.href = p.confirmationRedirectUrl;
} else {
form.style.display = 'none';
msg.className = 'crm-message success';
msg.innerHTML = p.confirmationMessage || 'Thank you for your submission.';
msg.style.display = 'block';
}
} else {
throw new Error((p && p.error) || 'Submission failed.');
}
});
}
// Replace this whole form widget with another form, rendered server-side
// with the carried-over values seeded in. Inline injected via
// innerHTML won’t run, so we re-create each script node to execute it
// (this is what wires up the new form’s submit / conditional logic).
function swapInNextForm(nextFormId, prefill) {
var rbody = new FormData();
rbody.append(‘action’, ‘p118_crm_render_form’);
rbody.append(‘form_id’, nextFormId);
rbody.append(‘prefill’, JSON.stringify(prefill || {}));
return fetch(“https://www.property118.com/wp-admin/admin-ajax.php”, { method: ‘POST’, body: rbody, credentials: ‘same-origin’ })
.then(function(r){ return r.json(); })
.then(function(res2){
var pd = res2.data || res2;
if (!pd || !pd.html) { throw new Error((pd && pd.error) || ‘Could not load the next form.’); }
var frag = document.createElement(‘div’);
frag.innerHTML = pd.html;
var parent = wrap.parentNode;
var nodes = [];
while (frag.firstChild) {
var node = frag.firstChild;
parent.insertBefore(node, wrap);
nodes.push(node);
}
parent.removeChild(wrap);
function reexec(old) {
var s = document.createElement(‘script’);
for (var a = 0; a < old.attributes.length; a++) {
s.setAttribute(old.attributes[a].name, old.attributes[a].value);
}
if (!old.src) { s.textContent = old.textContent; }
old.parentNode.replaceChild(s, old);
}
nodes.forEach(function(n){
if (n.tagName === 'SCRIPT') { reexec(n); }
else if (n.querySelectorAll) {
var scripts = n.querySelectorAll('script');
for (var k = 0; k < scripts.length; k++) { reexec(scripts[k]); }
}
});
var first = nodes[0];
try { if (first && first.scrollIntoView) first.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
});
}
form.addEventListener('submit', function(e){
e.preventDefault();
var data = collectFormData();
if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Processing…'; }
msg.style.display = 'none';
// Standard form (no payment)
uploadFiles(data)
.then(function(d) { return submitFormData(d); })
.catch(function(err){
if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = btnText; }
msg.className = 'crm-message error';
msg.textContent = err.message;
msg.style.display = 'block';
});
});
})();
The post Landbay, Kensington and Dudley cut landlord BTL mortgage rates appeared first on Property118.
View Full Article: Landbay, Kensington and Dudley cut landlord BTL mortgage rates
Categories
- Landlords (19)
- Real Estate (9)
- Renewables & Green Issues (1)
- Rental Property Investment (1)
- Tenants (21)
- Uncategorized (12,776)
Archives
- June 2026 (53)
- May 2026 (70)
- April 2026 (78)
- March 2026 (72)
- February 2026 (55)
- January 2026 (52)
- December 2025 (62)
- August 2025 (51)
- July 2025 (51)
- June 2025 (49)
- May 2025 (50)
- April 2025 (48)
- March 2025 (54)
- February 2025 (51)
- January 2025 (52)
- December 2024 (55)
- November 2024 (64)
- October 2024 (82)
- September 2024 (69)
- August 2024 (55)
- July 2024 (64)
- June 2024 (54)
- May 2024 (73)
- April 2024 (59)
- March 2024 (49)
- February 2024 (57)
- January 2024 (58)
- December 2023 (56)
- November 2023 (59)
- October 2023 (67)
- September 2023 (136)
- August 2023 (131)
- July 2023 (129)
- June 2023 (128)
- May 2023 (140)
- April 2023 (121)
- March 2023 (168)
- February 2023 (155)
- January 2023 (152)
- December 2022 (136)
- November 2022 (158)
- October 2022 (146)
- September 2022 (148)
- August 2022 (169)
- July 2022 (124)
- June 2022 (124)
- May 2022 (130)
- April 2022 (116)
- March 2022 (155)
- February 2022 (124)
- January 2022 (120)
- December 2021 (117)
- November 2021 (139)
- October 2021 (130)
- September 2021 (138)
- August 2021 (110)
- July 2021 (110)
- June 2021 (60)
- May 2021 (127)
- April 2021 (122)
- March 2021 (156)
- February 2021 (154)
- January 2021 (133)
- December 2020 (126)
- November 2020 (159)
- October 2020 (169)
- September 2020 (181)
- August 2020 (147)
- July 2020 (172)
- June 2020 (158)
- May 2020 (177)
- April 2020 (188)
- March 2020 (234)
- February 2020 (212)
- January 2020 (164)
- December 2019 (107)
- November 2019 (131)
- October 2019 (145)
- September 2019 (123)
- August 2019 (112)
- July 2019 (93)
- June 2019 (82)
- May 2019 (94)
- April 2019 (88)
- March 2019 (78)
- February 2019 (77)
- January 2019 (71)
- December 2018 (37)
- November 2018 (85)
- October 2018 (108)
- September 2018 (110)
- August 2018 (135)
- July 2018 (140)
- June 2018 (118)
- May 2018 (113)
- April 2018 (64)
- March 2018 (96)
- February 2018 (82)
- January 2018 (92)
- December 2017 (62)
- November 2017 (100)
- October 2017 (105)
- September 2017 (97)
- August 2017 (101)
- July 2017 (104)
- June 2017 (155)
- May 2017 (135)
- April 2017 (113)
- March 2017 (138)
- February 2017 (150)
- January 2017 (127)
- December 2016 (90)
- November 2016 (135)
- October 2016 (149)
- September 2016 (135)
- August 2016 (48)
- July 2016 (52)
- June 2016 (54)
- May 2016 (52)
- April 2016 (24)
- October 2014 (8)
- April 2012 (2)
- December 2011 (2)
- November 2011 (10)
- October 2011 (9)
- September 2011 (9)
- August 2011 (3)
Calendar
Recent Posts
- Buy to let lenders widen landlord options
- What the World Cup teaches landlords about selling property
- The Mortgage Works to pilot landlord EPC support package
- Landbay, Kensington and Dudley cut landlord BTL mortgage rates
- The Property Ombudsman expels five property firms

admin