Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Karlie Kloss Makes Her Met Gala Entrance as the Face of Estée Lauder

    May 6, 2026

    A 20-minute pitch wins Indian startup Pronto backing from Lachy Groom

    May 6, 2026

    Real Madrid president Perez to extend El Clasico boycott

    May 6, 2026
    Facebook X (Twitter) Instagram
    Select Language
    Facebook X (Twitter) Instagram
    NEWS ON CLICK
    Subscribe
    Wednesday, May 6
    • Home
      • United States
      • Canada
      • Spain
      • Mexico
    • Top Countries
      • Canada
      • Mexico
      • Spain
      • United States
    • Politics
    • Business
    • Entertainment
    • Fashion
    • Health
    • Science
    • Sports
    • Travel
    NEWS ON CLICK
    Home»Business & Economy»US Business & Economy»This Revenue Stream Hit 26% Growth Last Year for Franchises
    US Business & Economy

    This Revenue Stream Hit 26% Growth Last Year for Franchises

    News DeskBy News DeskMay 6, 2026No Comments9 Mins Read
    Share Facebook Twitter Pinterest Copy Link LinkedIn Tumblr Email VKontakte Telegram
    This Revenue Stream Hit 26% Growth Last Year for Franchises
    Share
    Facebook Twitter Pinterest Email Copy Link




    This Revenue Stream Hit 26% Growth Last Year for Franchises

























    Skip to main content

    You’re viewing the US website. Looking for the Site edition?

    Employers are using free meals to lure employees back to the office — franchises catering to this market are winning big.

    By

    Jonathan Small


    |


    edited by
    Dan Bova


    |


    May 06, 2026

    Here’s a number that should get every food franchise owner’s attention: 96% of workplaces tried a new restaurant in 2025 through catering orders.

    Workplace catering is becoming a customer acquisition machine for franchises. New data from ezCater shows 91% of workplaces are spending the same or more on food in 2026, with one in five bumping budgets by over 25%. Daily meal programs jumped 26% year-over-year as companies use free food to lure hybrid workers back to offices. Brands like Five Guys and Mission BBQ are capitalizing fast.

    The real bonus? Sixty-two percent of employees who try a restaurant at work end up ordering personally later, and 67% recommend it to friends and family. Menu design is make-or-break—franchises with detailed menus, photos and dietary options get twice as many bookings.

    Here’s a number that should get every food franchise owner’s attention: 96% of workplaces tried a new restaurant in 2025 through catering orders.

    Workplace catering is becoming a customer acquisition machine for franchises. New data from ezCater shows 91% of workplaces are spending the same or more on food in 2026, with one in five bumping budgets by over 25%. Daily meal programs jumped 26% year-over-year as companies use free food to lure hybrid workers back to offices. Brands like Five Guys and Mission BBQ are capitalizing fast.

    The real bonus? Sixty-two percent of employees who try a restaurant at work end up ordering personally later, and 67% recommend it to friends and family. Menu design is make-or-break—franchises with detailed menus, photos and dietary options get twice as many bookings.

    Jonathan Small is a bestselling author, journalist, producer, and podcast host. For 25 years, he… Read more

    ${reply?.comment_author}${reply?.eln_tier_label ? `${reply.eln_tier_label}` : ”}

    •
    ${reply?.comment_relative_time}

    ${reply?.comment_content?.trim()}

    `;
    }

    function createComment(comment, replies, isLastComment) {
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);

    if (!commentListDiv) {
    return;
    }

    const borderClasses = isLastComment ? ” : ‘tw:border-b tw:border-slate-200’;

    const currentUser = window?.tp?.pianoId?.getUser() ?? null;
    const currentUserInitials = currentUser
    ? getInitials(`${currentUser?.firstName ?? ”} ${currentUser?.lastName ?? ”}`)
    : ”;

    const repliesHTML = replies.length ? `

    ${replies.map(buildReplyHTML).join(”)}

    ` : ”;

    const replyButtonHTML = allowsComments ? `

    ` : ”;

    const replyFormHTML = allowsComments ? `

    ` : ”;

    const commentDiv = `

    ${comment?.comment_author}${comment?.eln_tier_label ? “ : ”}

    •
    ${comment?.comment_relative_time}

    ${comment?.comment_content?.trim()}

    ${replyButtonHTML}

    ${repliesHTML}
    ${replyFormHTML}

    `;

    commentListDiv.innerHTML += commentDiv;
    }

    function displayComments() {
    // Empty out the comment list container before refreshing comments.
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);
    commentListDiv.innerHTML = ”;

    const comments = state?.comments ?? [];

    if (!comments.length) {
    return;
    }

    // Build a threaded structure: separate top-level from replies.
    const repliesByParent = {};
    const topLevelComments = [];

    comments.forEach(comment => {
    if (comment.comment_parent === 0) {
    topLevelComments.push(comment);
    } else {
    const parentId = comment.comment_parent;
    if (!repliesByParent[parentId]) {
    repliesByParent[parentId] = [];
    }
    repliesByParent[parentId].push(comment);
    }
    });

    // Apply top-level sort order. Server returns DESC; reverse for oldest-first.
    if (state.sortOrder === ‘oldest’) {
    topLevelComments.reverse();
    }

    // Replies always show oldest first within a thread (server returns DESC, so reverse).
    Object.keys(repliesByParent).forEach(parentId => {
    repliesByParent[parentId].reverse();
    });

    topLevelComments.forEach((comment, index) => {
    const isLastComment = index === topLevelComments.length – 1;
    const replies = repliesByParent[comment.comment_ID] ?? [];
    createComment(comment, replies, isLastComment);
    });

    createCommentAvatars();
    }

    function updateCommentCount() {
    const countDiv = document.getElementById(PublicCommentSelectors.COMMENT_COUNT);
    const sortControls = document.getElementById(PublicCommentSelectors.SORT_CONTROLS);

    if (!countDiv) {
    return;
    }

    const count = state?.comments?.length ?? 0;

    // Do not display if there are no comments.
    if (count === 0) {
    return;
    }

    countDiv.innerHTML = `${count} Comment${count > 1 ? ‘s’ : ”}`;

    if (sortControls) {
    sortControls.classList.remove(‘tw:hidden’);
    sortControls.classList.add(‘tw:flex’);
    }
    }

    function displayLoader(show) {
    const loader = document.getElementById(PublicCommentSelectors.BUTTON_LOADER);
    const text = document.getElementById(PublicCommentSelectors.BUTTON_TEXT);

    if (!loader || !text) {
    return;
    }

    // Show or hide the loader.
    if (show) {
    loader.classList.remove(‘tw:hidden’);
    text.classList.add(‘tw:hidden’);
    } else {
    loader.classList.add(‘tw:hidden’);
    text.classList.remove(‘tw:hidden’);
    }
    }

    function displayError(error) {
    const errorDiv = document.getElementById(PublicCommentSelectors.ERROR);

    if (!errorDiv) {
    return;
    }

    if (error) {
    errorDiv.classList.add(‘tw:block’);
    errorDiv.classList.remove(‘tw:hidden’);
    errorDiv.textContent = `Comment submission error: ${error}`;
    } else {
    errorDiv.classList.remove(‘tw:block’);
    errorDiv.classList.add(‘tw:hidden’);
    errorDiv.textContent=””;
    }
    }

    function clearCommentInput() {
    const commentField = document.getElementById(PublicCommentSelectors.INPUT);

    if (!commentField) {
    return;
    }

    commentField.value=””;
    }

    function updateComments(comments = []) {
    state.comments = comments;
    displayComments();
    updateCommentCount();
    }

    function runCommentProcess(type) {
    if (type === ‘postComment’) {
    const comment = document.getElementById(PublicCommentSelectors.INPUT);

    if (!comment || !comment?.value) {
    return;
    }

    // Hide errors, show loader.
    displayError();
    displayLoader(true);
    }

    const data = {
    type,
    postId: 427689,
    };

    // Get a fresh nonce and either fetch comments or post comment.
    fetch(`${adminAjaxUrl}?action=ep_get_public_comment_nonce`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    console.error(‘Error getting nonce: ‘, response?.data?.message);
    return;
    }

    const nonce = response?.data?.nonce;

    // Get comments.
    if (type === ‘getComments’) {
    getComments(nonce);
    return;
    }

    // Post comment.
    if (type === ‘postComment’) {
    postComment(nonce);
    }
    })
    .catch((e) => {
    displayLoader(false);
    console.error(`Error running comment process ${type}: `, e);
    });
    }

    function getComments(nonce) {
    const data = {
    nonce,
    postId: 427689,
    };

    // Fetch comments.
    fetch(`${adminAjaxUrl}?action=ep_get_public_comments`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    console.error(‘Error getting comments: ‘, response?.data?.message);
    return;
    }

    updateComments(response?.data?.comments);
    displayLoader(false);
    })
    .catch((e) => {
    displayLoader(false);
    console.error(‘Error getting comments: ‘, e);
    });
    }

    function postComment(nonce) {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    console.error(‘Error posting comment: Unauthorized. Submission aborted.’);
    return;
    }

    const comment = document.getElementById(PublicCommentSelectors.INPUT);

    if (!comment || !comment?.value) {
    return;
    }

    const data = {
    nonce,
    comment: comment.value,
    commentParent: 0,
    postId: 427689,
    uid: user?.uid,
    };

    // Post the comment.
    fetch(`${adminAjaxUrl}?action=ep_create_public_comment`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    credentials: ‘include’,
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    displayError(response?.data?.message, true);
    console.error(‘Error posting comment: ‘, response?.data?.message);
    return;
    }

    // Handle success.
    clearCommentInput();
    runCommentProcess(‘getComments’);
    })
    .catch((e) => {
    displayLoader(false);
    displayError(e);
    console.error(‘Error posting comment: ‘, e);
    });
    }

    function toggleReplyForm(commentId) {
    // Close any other open reply forms.
    document.querySelectorAll(‘.ep-reply-form’).forEach(function(form) {
    if (form.dataset.parentId !== String(commentId)) {
    form.classList.add(‘tw:hidden’);
    }
    });

    // Toggle the targeted reply form.
    const targetForm = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + commentId + ‘”]’);

    if (targetForm) {
    targetForm.classList.toggle(‘tw:hidden’);

    if (!targetForm.classList.contains(‘tw:hidden’)) {
    targetForm.querySelector(‘.ep-reply-input’)?.focus();
    }
    }
    }

    function setReplyLoading(formEl, isLoading) {
    const btn = formEl.querySelector(‘.ep-reply-submit’);
    const btnText = formEl.querySelector(‘.ep-reply-button-text’);

    if (!btn || !btnText) {
    return;
    }

    if (isLoading) {
    btnText.textContent=”Posting…”;
    btn.disabled = true;
    } else {
    btnText.textContent=”Post Reply”;
    btn.disabled = false;
    }
    }

    function displayReplyError(formEl, error) {
    const errorDiv = formEl.querySelector(‘.ep-reply-error’);

    if (!errorDiv || !error) {
    return;
    }

    errorDiv.textContent=”Reply error: ” + error;
    errorDiv.classList.remove(‘tw:hidden’);
    errorDiv.classList.add(‘tw:block’);
    }

    function clearReplyError(formEl) {
    const errorDiv = formEl.querySelector(‘.ep-reply-error’);

    if (!errorDiv) {
    return;
    }

    errorDiv.textContent=””;
    errorDiv.classList.add(‘tw:hidden’);
    errorDiv.classList.remove(‘tw:block’);
    }

    function postReply(nonce, parentId, replyText, formEl) {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    setReplyLoading(formEl, false);
    return;
    }

    const data = {
    nonce,
    comment: replyText,
    commentParent: parentId,
    postId: 427689,
    uid: user?.uid,
    };

    fetch(`${adminAjaxUrl}?action=ep_create_public_comment`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    credentials: ‘include’,
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    setReplyLoading(formEl, false);

    if (!response.success) {
    displayReplyError(formEl, response?.data?.message);
    console.error(‘Error posting reply: ‘, response?.data?.message);
    return;
    }

    formEl.querySelector(‘.ep-reply-input’).value=””;
    formEl.classList.add(‘tw:hidden’);
    runCommentProcess(‘getComments’);
    })
    .catch((e) => {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, ‘Network error. Please try again.’);
    console.error(‘Error posting reply: ‘, e);
    });
    }

    function submitReply(parentId, formEl) {
    const input = formEl.querySelector(‘.ep-reply-input’);

    if (!input || !input.value.trim()) {
    return;
    }

    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    openLoginModal();
    return;
    }

    setReplyLoading(formEl, true);
    clearReplyError(formEl);

    const data = {
    type: ‘postComment’,
    postId: 427689,
    };

    fetch(`${adminAjaxUrl}?action=ep_get_public_comment_nonce`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    if (!response.success) {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, response?.data?.message);
    return;
    }

    postReply(response?.data?.nonce, parseInt(parentId, 10), input.value.trim(), formEl);
    })
    .catch((e) => {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, ‘Network error. Please try again.’);
    console.error(‘Error getting nonce for reply: ‘, e);
    });
    }

    function setupCommentListDelegation() {
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);

    if (!commentListDiv) {
    return;
    }

    commentListDiv.addEventListener(‘click’, function(e) {
    // Reply button: toggle the inline reply form.
    const replyButton = e.target.closest(‘.’ + PublicCommentSelectors.REPLY_BUTTON);
    if (replyButton) {
    const commentId = replyButton.dataset.commentId;
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    openLoginModal();
    return;
    }

    toggleReplyForm(commentId);
    return;
    }

    // Reply cancel: hide the reply form.
    const replyCancel = e.target.closest(‘.ep-reply-cancel’);
    if (replyCancel) {
    const parentId = replyCancel.dataset.parentId;
    const form = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + parentId + ‘”]’);
    if (form) {
    form.classList.add(‘tw:hidden’);
    }
    return;
    }

    // Reply submit: post the reply.
    const replySubmit = e.target.closest(‘.ep-reply-submit’);
    if (replySubmit) {
    const parentId = replySubmit.dataset.parentId;
    const form = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + parentId + ‘”]’);
    if (form) {
    submitReply(parentId, form);
    }
    }
    });
    }

    function setupUserAvatar() {
    const usernameDiv = document.getElementById(PublicCommentSelectors.USERNAME);
    const userAvatar = document.getElementById(PublicCommentSelectors.USER_AVATAR);

    if (!usernameDiv || !userAvatar) {
    return;
    }

    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    return;
    }

    const fullName = `${user?.firstName ?? ”} ${user?.lastName ?? ”}`;

    usernameDiv.innerHTML = fullName;
    userAvatar.innerHTML = getInitials(fullName);
    }

    function openLoginModal() {
    window?.tp?.pianoId?.show({ displayMode: ‘modal’, screen: ‘login’ });
    }

    function setupCommentSubmitButton() {
    const submitButton = document.getElementById(PublicCommentSelectors.SUBMIT);

    if (!submitButton || state.submitCommentButtonRegistered) {
    return;
    }

    // Register a single click handler that checks auth state at click time.
    submitButton.addEventListener(‘click’, function() {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    openLoginModal();
    return;
    }

    runCommentProcess(‘postComment’);
    });

    state.submitCommentButtonRegistered = true;
    }

    function setSortOrder(order) {
    state.sortOrder = order;

    const newestBtn = document.getElementById(PublicCommentSelectors.SORT_NEWEST);
    const oldestBtn = document.getElementById(PublicCommentSelectors.SORT_OLDEST);

    if (newestBtn && oldestBtn) {
    const activeClasses = [‘tw:font-bold’, ‘tw:text-blue-800’];
    const inactiveClasses = [‘tw:font-normal’, ‘tw:text-slate-500’];

    if (order === ‘newest’) {
    newestBtn.classList.add(…activeClasses);
    newestBtn.classList.remove(…inactiveClasses);
    oldestBtn.classList.add(…inactiveClasses);
    oldestBtn.classList.remove(…activeClasses);
    } else {
    oldestBtn.classList.add(…activeClasses);
    oldestBtn.classList.remove(…inactiveClasses);
    newestBtn.classList.add(…inactiveClasses);
    newestBtn.classList.remove(…activeClasses);
    }
    }

    displayComments();
    }

    function setupSortControls() {
    const newestBtn = document.getElementById(PublicCommentSelectors.SORT_NEWEST);
    const oldestBtn = document.getElementById(PublicCommentSelectors.SORT_OLDEST);

    if (newestBtn) {
    newestBtn.addEventListener(‘click’, function() {
    setSortOrder(‘newest’);
    });
    }

    if (oldestBtn) {
    oldestBtn.addEventListener(‘click’, function() {
    setSortOrder(‘oldest’);
    });
    }
    }

    runCommentProcess(‘getComments’);
    listenForPianoLogin();
    setupCommentSubmitButton();
    setupCommentListDelegation();
    setupSortControls();
    });


    ‘Follow Your Passion’ Is Bad Advice, Says This Best-Selling Author. Here’s What You Should Do Instead.


    OpenAI Is Reportedly Building an AI Phone — And Taking Aim at the iPhone


    CNN Founder Ted Turner Dies at 87—Here’s the Revolutionary Legacy He Leaves Behind


    James Murdoch Lost the Family ‘Succession’ Battle — Now He’s Building His Own Media Empire


    Ford Has a Secret Team Working on a $30,000 Electric Truck to Beat China. It’s a ‘Model T Moment,’ Says CEO.


    Apple In Talks With Intel and Samsung to Build Chips in the US —Here’s Why

    Food Business franchise Growth Strategies Office Culture
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Telegram Copy Link
    News Desk
    • Website

    News Desk is the dedicated editorial force behind News On Click. Comprised of experienced journalists, writers, and editors, our team is united by a shared passion for delivering high-quality, credible news to a global audience.

    Related Posts

    US Business & Economy

    ‘Date Cancelled’ is the latest dating meme ruined by brands

    May 6, 2026
    US Business & Economy

    The biggest shift in the weight-loss drug boom may not be Ozempic anymore

    May 6, 2026
    US Business & Economy

    The Quiet Work That Builds the Strongest Customer Relationships

    May 6, 2026
    US Business & Economy

    Which housing markets have the most—and least—mortgage distress right now?

    May 6, 2026
    US Business & Economy

    The solopreneur’s guide to saying ‘no’

    May 6, 2026
    US Business & Economy

    How Sales Teams Undercut Themselves with Longtime Clients

    May 6, 2026
    Add A Comment
    Leave A Reply Cancel Reply

    Don't Miss

    Karlie Kloss Makes Her Met Gala Entrance as the Face of Estée Lauder

    News DeskMay 6, 20260

    Karlie Kloss walked the 2026 Met Gala carpet this past Monday carrying a partnership that’s…

    A 20-minute pitch wins Indian startup Pronto backing from Lachy Groom

    May 6, 2026

    Real Madrid president Perez to extend El Clasico boycott

    May 6, 2026

    Gwyneth Paltrow’s ‘Tone-Deaf’ Remarks About ‘Rich White Dudes’

    May 6, 2026
    Tech news by Newsonclick.com
    Top Posts

    Orioles contact-less lineup tries for better results vs. Guardians

    April 19, 2026

    Missouri town fires half its city council over data center deal

    April 13, 2026

    Avatar de Cerati recrea el espíritu de Soda Stereo

    April 14, 2026

    La Jornada: México SA

    April 14, 2026
    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    Editors Picks

    Karlie Kloss Makes Her Met Gala Entrance as the Face of Estée Lauder

    May 6, 2026

    A 20-minute pitch wins Indian startup Pronto backing from Lachy Groom

    May 6, 2026

    Real Madrid president Perez to extend El Clasico boycott

    May 6, 2026

    Gwyneth Paltrow’s ‘Tone-Deaf’ Remarks About ‘Rich White Dudes’

    May 6, 2026
    About Us

    NewsOnClick.com is your reliable source for timely and accurate news. We are committed to delivering unbiased reporting across politics, sports, entertainment, technology, and more. Our mission is to keep you informed with credible, fact-checked content you can trust.

    We're social. Connect with us:

    Facebook X (Twitter) Instagram Pinterest YouTube
    Latest Posts

    Karlie Kloss Makes Her Met Gala Entrance as the Face of Estée Lauder

    May 6, 2026

    A 20-minute pitch wins Indian startup Pronto backing from Lachy Groom

    May 6, 2026

    Real Madrid president Perez to extend El Clasico boycott

    May 6, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Facebook X (Twitter) Instagram Pinterest
    • About Us
    • Editorial Policy
    • Privacy Policy
    • Terms and Conditions
    • Disclaimer
    • Advertise
    • Contact Us
    © 2026 Newsonclick.com || Designed & Powered by ❤️ Trustmomentum.com.

    Type above and press Enter to search. Press Esc to cancel.