Skip to content
About Us
Leadership
Governance
Reports
What We Do
Our Programs
Our Portfolio
Get Involved
Ways to Donate
Volunteer With Us
Essential Items Needed
Shop The Homefull Catalogue
Homes First Care Kit Program
Homes For Dinner
Sponsorship Opportunities
FAQs & Send Us A Note
2023 Event Highlights
Join Our Team
Latest News
I Need Help
Contact
Donate Now
Menu
About Us
Leadership
Governance
Reports
What We Do
Our Programs
Our Portfolio
Get Involved
Ways to Donate
Volunteer With Us
Essential Items Needed
Shop The Homefull Catalogue
Homes First Care Kit Program
Homes For Dinner
Sponsorship Opportunities
FAQs & Send Us A Note
2023 Event Highlights
Join Our Team
Latest News
I Need Help
Contact
Donate Now
Latest News
Check out our latest news.
Below is a collection of news and updates about Homes First arranged by date.
Filter by Category
Filter by Category
Select Category
Awards
Events
Industry news
Our Volunteers
Properties
Real life stories
What We Do
Filter by Month
Filter by Month
Select Month
November 2024
October 2024
September 2024
August 2024
July 2024
May 2024
April 2024
March 2024
February 2024
September 2023
August 2023
June 2023
May 2023
March 2023
December 2022
October 2022
September 2022
July 2022
April 2022
January 2022
December 2021
November 2021
Embracing Freedom: A Tale of Love Across Borders
November 1, 2024
Read More »
About Us
Leadership
Governance
Reports
What We Do
Our Programs
Our Portfolio
Get Involved
Ways to Donate
Volunteer With Us
Essential Items Needed
Shop The Homefull Catalogue
Homes First Care Kit Program
Homes For Dinner
Sponsorship Opportunities
FAQs & Send Us A Note
2023 Event Highlights
Join Our Team
Latest News
I Need Help
Contact
Donate Now
const getUrl = require('getUrl'); const sendPixel = require('sendPixel'); const setInWindow = require('setInWindow'); const getTimestamp = require('getTimestamp'); const injectScript = require('injectScript'); const copyFromWindow = require('copyFromWindow'); const encodeUriComponent = require('encodeUriComponent'); const callLater = require('callLater'); /** * Globals */ const conversionIds = data.conversionId ? data.conversionId.split(',').slice(0,3).map(id => id.trim()) : ''; const allPids = []; const pageUrl = data.customUrl ? data.customUrl : getUrl(); const eventId = data.eventId; let isScriptInjected = false; /** * Checks presence of LinkedIn Insight tag code. */ const isInsightTagAPIAvailable = () => typeof copyFromWindow('lintrk') === 'function'; /** * Reads and Sets in global namespace all applicable PIDs on the page */ const setAllPids = (function() { const partnerIds = {}; const bizoId = copyFromWindow('_bizo_data_partner_id'); const bizoIds = copyFromWindow('_bizo_data_partner_ids') || []; const linkedInPartnerId = copyFromWindow('_linkedin_data_partner_id'); const linkedInPartnerIds = copyFromWindow('_linkedin_data_partner_ids') || []; const addPid = pid => { if (pid && !partnerIds[pid]) { partnerIds[pid] = true; allPids.push(pid); } }; // add the partner ids set via this GTM installation const inputPids = data.partnerId.split(','); inputPids.forEach(id => addPid(id.trim())); // Add all PIDs that may have updated the global, helps skipping following adds. addPid(linkedInPartnerId); linkedInPartnerIds.forEach(id => addPid(id)); // add other PIDs from page addPid(bizoId); bizoIds.forEach(id => addPid(id)); // Update the main namespace for future tracking by InsightTag to include the partner IDs setInWindow('_linkedin_data_partner_ids', allPids, true); }()); /** * Generate query params only for GTM based tracking */ function generateQueryParamsForGTM(cid) { const encodedPIDs = encodeUriComponent(allPids.join(',')); let result = 'pid=' + encodedPIDs; result += '&tm=gtmv2'; result += cid ? '&conversionId=' + encodeUriComponent(cid) : ''; result += '&url=' + encodeUriComponent(pageUrl); result += eventId ? '&eventId=' + encodeUriComponent(eventId) : ''; result += '&v=2&fmt=js&time=' + getTimestamp(); return result; } // Success call back to InsightTag injection function didInjectInsightTag() { callLater(() => { trackByInsightTag(); }); } // Callback to plain GTM when InsightTag code failed to inject function didFailInsightTag() { trackByPlainGTM(); } function trackByPlainGTM() { if (conversionIds.length && conversionIds.length <= 3) { conversionIds.forEach(id => { const trackingUrl = 'https://px.ads.linkedin.com/collect?' + generateQueryParamsForGTM(id); sendPixel(trackingUrl, data.gtmOnSuccess, data.gtmOnFailure); }); } else { sendPixel('https://px.ads.linkedin.com/collect?' + generateQueryParamsForGTM(), data.gtmOnSuccess, data.gtmOnFailure); } } /** * Download LinkedIn Insight tag core code if `window.lintrk` is not available * Also ensure it doesn’t default fire. */ function trackByInsightTag() { if (isInsightTagAPIAvailable()) { const lintrk = copyFromWindow('lintrk'); const options = { tmsource: 'gtmv2' }; options.conversion_url = pageUrl; if (eventId) { options.event_id = eventId; } if (conversionIds.length && conversionIds.length <= 3) { conversionIds.forEach(id => { options.conversion_id = id; lintrk('track', options); }); } else { lintrk('track', options); } data.gtmOnSuccess(); } else if (!isScriptInjected) { isScriptInjected = true; setInWindow('_already_called_lintrk', true, true); injectScript('https://snap.licdn.com/li.lms-analytics/insight.min.js', didInjectInsightTag, didFailInsightTag); } else { didInjectInsightTag(); } } trackByInsightTag();