Go to top

Smart, mobile advertising on New York delivery bikes

The first data-driven OOH network built on micromobility, powered by 3,000 connected e-bikes in New York City.

TRUSTED BY

Ad Where Life Happens

MetroMesh makes the city itself your canvas—your message traveling with the riders who pulse through every neighborhood, from curbside to café.


STEP 1.

🛎️ Book a Free Consultation

Work with our team to shape your campaign from the ground up. Set clear goals, lock in launch dates, and pinpoint your ideal neighborhoods and audiences. We’ll ensure every mile moves your brand closer to its targets.

STEP 2.

🔴 Go Live in New York City

Launch your campaign across MetroMesh’s GPS-tracked rider network and watch your brand move through the city in real time. From Times Square to Fort Greene, your message travels with the pulse of New York.

STEP 3.

📊 Real-Time Monitor & Optimize

Track your campaign’s performance live with real-time analytics that let you adjust targeting, creative, or rider deployment on the fly. Once the data’s in, measure impressions, engagement, and key KPIs.

Frequently Asked Questions

Access New York’s Busiest Locations

You pick the zones—we saturate them. Achieve nonstop visibility with rolling coverage that targets key streets, events, and audiences.


"Delivery riders are everywhere—uptown, downtown, east, west, visible to just about anybody—making MetroMesh the ultimate way to reach everyone, everywhere."


Alex, Global CGO @ R/GA

"Your brand deserves more than visibility—it deserves relevance. MetroMesh ensures your message meets people where they are, not where you hope they’ll be."


Jessica, Marketing @ MetroMesh

"Wouldn't you rather have a digital ad in the elevator with your customer than an ad on the side of a bus? MetroMesh is giving people a smarter, more impactful solution."


Brian, CEO @ Vengo Labs

"We haven’t seen true format innovation in out-of-home advertising since taxi tops emerged in the late ’90s. What MetroMesh is building is nothing short of groundbreaking."


Joshua, Growth @ MetroMesh

About Us

Founded in 2024, MetroMesh Media is a New York–based tech-enabled, street-level advertising platform transforming OOH into motion. By placing GPS-powered, data-driven media on last-mile delivery fleets, we help brands achieve hyper-local reach and bring them into the real world, where people actually live, work, and move.

Core Values And Impact

Our impact goes beyond advertising—our smart, mobile ads support carbon-neutral initiatives, empower delivery riders, and enhance urban safety. By connecting brands, people, and cities, we’re building a more sustainable and community-driven future for outdoor media.


Contact Us

© 2025 MetroMesh Media, Inc. All Rights Reserved.

Effective Date: 01/01/2025

Privacy Policy

MetroMesh Media, Inc. (“MetroMesh,” “we,” “our,” or “us”) is committed to protecting your privacy. This Privacy Policy outlines the principles and practices that govern the collection, use, disclosure, and protection of personal and non-personal information through our products and services, including our website (www.metromeshmedia.com), digital advertising platform, mobile tools, and any other online services that reference or link to this policy (collectively, the “Services”).This Privacy Policy does not apply to information collected from employees, contractors, or vendors in their professional capacities. It also does not govern the practices of third parties, including those integrated into our Services, except where explicitly stated.1. Consent and Scope of Policy
By accessing or using our Services, you acknowledge and consent to the practices described in this Privacy Policy. If you do not agree with this Policy, please refrain from using our Services. Information collected through the Services may be stored and processed in the United States or other jurisdictions where MetroMesh or its service providers operate. You acknowledge and accept that such jurisdictions may have data protection laws that differ from those of your home country.
2. Information We Collect
A. Personal Information
We may collect “Personal Information,” defined as data that identifies or can reasonably be linked to an individual. This includes:
- Full name
- Email address
- Telephone number
- Postal or business address
- Government-issued identifiers
- User-submitted photographs or profile content
B. Non-Personal and Technical Data
We also collect non-identifiable data, including but not limited to:
- Browser type and settings
- Device type, operating system, and IP address
- Language preference
- Interaction history with our Services (e.g., pages viewed, content clicked)
- General geographic data (e.g., city, region—not precise geolocation)
- Aggregated analytics
3. Use of Collected Information
MetroMesh uses collected data to:
- Deliver, operate, and improve our Services
- Authenticate user accounts and administer access controls
- Communicate with users, including transactional and service-related communications
- Analyze usage to improve user experience and platform performance
- Develop new features and offerings
- Comply with legal obligations and enforce our Terms of Service
4. Information Sharing and Disclosure
We do not sell Personal Information. However, we may disclose data under the following conditions:
A. Service Providers
We may engage third-party providers to perform business functions such as data storage, website hosting, customer support, and analytics. These entities may access Personal Information strictly to perform services on our behalf and are contractually obligated to protect its confidentiality.
B. Legal Compliance and Risk Mitigation
We may disclose Personal Information where required to comply with legal or regulatory obligations, in response to lawful requests by public authorities, or to enforce our rights under applicable law.
C. Business Transfers
In the event of a merger, acquisition, reorganization, or sale of assets, Personal Information may be transferred as part of the transaction, subject to standard confidentiality arrangements.
D. Analytics and Tool Providers
We may integrate third-party software (e.g., APIs, SDKs) that collect usage metrics. These tools may access or transmit anonymized and/or personal data in accordance with their respective privacy policies.
5. Cookies and Similar Technologies
We use cookies, web beacons, local storage, and similar technologies to:
- Maintain session continuity
- Store user preferences
- Perform site analytics
- Enhance the functionality and personalization of our Services
Users may manage cookies through their browser settings. Disabling cookies may impact the availability or functionality of some features.
6. Your Rights and Choices
Subject to applicable law, users may:
- Request access to the Personal Information we hold about them
- Request correction or deletion of their Personal Information
- Opt out of receiving marketing communications
Requests may be submitted to [email protected]. We reserve the right to verify the identity of the requestor and may deny requests in limited circumstances (e.g., legal obligations, internal record-keeping).
7. Jurisdiction-Specific Disclosures
California, Virginia, and Other U.S. States
Although MetroMesh is not currently subject to specific state privacy laws such as the California Consumer Privacy Act (CCPA), we maintain best practices regarding transparency, access, and user choice. Should MetroMesh become subject to such laws, this Privacy Policy will be updated accordingly.
Canada
Canadian users may contact [email protected] to exercise their rights under applicable law or to file a complaint with the Office of the Privacy Commissioner of Canada.
Nevada
MetroMesh does not engage in the sale of Personal Information as defined under Nevada law. Inquiries may be submitted to [email protected].
8. Children’s Privacy
Our Services are not intended for individuals under the age of 18. We do not knowingly collect or store Personal Information from minors. If we become aware of such data, we will delete it promptly.
9. Information Security
We implement reasonable administrative, technical, and physical safeguards to protect Personal Information, including encryption (e.g., SSL/TLS), access controls, and firewalls. Despite these efforts, no method of transmission or storage is completely secure, and we cannot guarantee absolute security.
10. External Links and Third Parties
Our Services may include links or integrations with third-party websites and services. MetroMesh is not responsible for the privacy practices of these entities. Users are encouraged to review third-party privacy policies before engaging with their content or services.
11. Changes to This Policy
MetroMesh may amend this Privacy Policy periodically. Material changes will be communicated via our website or email. Continued use of the Services after such modifications constitutes acceptance of the updated policy. The “Last Updated” date at the top of this page indicates the latest revision.
12. Contact Us
For questions, concerns, or requests related to this Privacy Policy, please contact:
MetroMesh Media, Inc.
Attn: Privacy Team
[email protected]
This Privacy Policy is intended to align with applicable data privacy frameworks and industry best practices. Users are encouraged to consult legal counsel regarding specific compliance obligations.

Budget Planner

(function () { const budgetEl = document.getElementById("budget"); const optBike = document.getElementById("opt-bike"); const optBag = document.getElementById("opt-bag"); const optCombo = document.getElementById("opt-combined"); const submitBtn = document.getElementById("plan-submit"); const table = document.getElementById("plan-results"); const errorEl = document.getElementById("plan-error"); const multiError = document.getElementById("plan-multi-error"); const disclaimerEl = document.getElementById("plan-disclaimer"); const loadingEl = document.getElementById("plan-loading"); submitBtn.addEventListener("click", () => { const budget = parseFloat(budgetEl.value) || 0; const chooseBike = optBike.checked; const chooseBag = optBag.checked; const chooseCombo = optCombo.checked; const selected = [chooseBike, chooseBag, chooseCombo].filter((v) => v).length; if (selected === 0) { table.style.display = "none"; disclaimerEl.style.display = "none"; multiError.style.display = "none"; errorEl.style.display = "block"; loadingEl.style.display = "none"; return; } if (selected > 1) { table.style.display = "none"; disclaimerEl.style.display = "none"; errorEl.style.display = "none"; multiError.style.display = "block"; loadingEl.style.display = "none"; return; } errorEl.style.display = "none"; multiError.style.display = "none"; loadingEl.style.display = "block"; const delay = 500 + Math.random() * 500; setTimeout(() => { table.querySelectorAll("tbody tr").forEach((row) => { const days = parseInt(row.dataset.weeks, 10); const discount = parseFloat(row.dataset.discount); const bikeCost = 14 * days * (1 - discount); const bagCost = 16 * days * (1 - discount); const comboCost = (5 * 10 * days + 1 * 15 * days) * (1 - discount); let bikes = 0, bags = 0, spend = 0; if (chooseBike) { bikes = Math.floor(budget / bikeCost); spend = bikes * bikeCost; } else if (chooseBag) { bags = Math.floor(budget / bagCost); spend = bags * bagCost; } else { const bundles = Math.floor(budget / comboCost); bikes = bundles * 5; bags = bundles * 1; spend = bundles * comboCost; } row.querySelector(".bikes").textContent = bikes; row.querySelector(".bags").textContent = bags; row.querySelector(".cost").textContent = `$${spend.toFixed(2)}`; }); table.style.display = "table"; disclaimerEl.style.display = "block"; loadingEl.style.display = "none"; }, delay); }); })();

Campaign Calculator

Hold Ctrl/Cmd to select multiple
(function () { const bikesEl = document.getElementById("bikes"); const bagsEl = document.getElementById("bags"); const lengthEl = document.getElementById("length"); const areaEl = document.getElementById("area"); const promoEl = document.getElementById("promo"); const PROMO_MAP = { FIRSTBUY: 0.832, PILOTBUD: 0.5, NY2025: 0.9, HOPPYDEAL: 0.9, LOVEMOM: 0.95, LOVEDAD: 0.95, JULY4TH: 0.974, HALLOWEEN: 0.95, BLACKFRIDAY: 0.9, }; const costBikesEl = document.getElementById("cost-bikes"); const costBagsEl = document.getElementById("cost-bags"); const totalEl = document.getElementById("cost-total"); const totalsEl = document.getElementById("totals"); const loadingEl = document.getElementById("loading"); const submitBtn = document.getElementById("calc-submit"); const resultsEl = document.getElementById("results"); const displayingHoursEl = document.getElementById("displaying-hours"); const impressionsEl = document.getElementById("estimated-impressions"); const cpmEl = document.getElementById("estimated-cpm"); function calculate() { const bikes = parseInt(bikesEl.value, 10) || 0; const bags = parseInt(bagsEl.value, 10) || 0; const lengthMul = parseFloat(lengthEl.value) || 1; const days = parseInt(lengthEl.selectedOptions[0].dataset.days, 10) || 0; const selectedAreas = Array.from(areaEl.selectedOptions); let areaMul = 1; if (selectedAreas.length) { const sum = selectedAreas.reduce((acc, o) => acc + parseFloat(o.value), 0); areaMul = sum / selectedAreas.length; } const baseBikeCost = bikes * 10 * days * lengthMul * areaMul; const baseBagCost = bags * 15 * days * lengthMul * areaMul; const preDiscountTotal = baseBikeCost + baseBagCost; const code = promoEl.value.trim().toUpperCase(); let discountMul = 1; if (PROMO_MAP.hasOwnProperty(code)) { discountMul = PROMO_MAP[code]; } const rawDiscountAmount = preDiscountTotal * (1 - discountMul); const discountAmount = Math.min(rawDiscountAmount, 5000); const effectiveDiscRate = discountAmount / preDiscountTotal; const finalMul = 1 - effectiveDiscRate; const costBikes = baseBikeCost * finalMul; const costBags = baseBagCost * finalMul; const total = costBikes + costBags; costBikesEl.textContent = costBikes.toFixed(2); costBagsEl.textContent = costBags.toFixed(2); totalEl.textContent = total.toFixed(2); const promoSuccessEl = document.getElementById("promo-success"); if (PROMO_MAP.hasOwnProperty(code)) { promoSuccessEl.style.display = "block"; promoSuccessEl.textContent = `Your promo code ${code} has been successfully applied, providing ` + `${((1 - discountMul) * 100).toFixed(1)}% discount. ` + `This discount is subject to a cap of $5,000, resulting in an effective discount rate of ` + `${(effectiveDiscRate * 100).toFixed(1)}%.`; } else { promoSuccessEl.style.display = "none"; } const hours = (bikes * 15 * days) + (bags * 8 * days); const rawImpressions = areaMul * 600 * hours; const impressions = Math.round(rawImpressions / 10) * 10; const cpm = total / (impressions / 1000); displayingHoursEl.textContent = hours.toFixed(0); impressionsEl.textContent = impressions.toLocaleString(); cpmEl.textContent = cpm.toFixed(2); } submitBtn.addEventListener("click", function () { totalsEl.style.display = "none"; resultsEl.style.display = "none"; loadingEl.style.display = "block"; const delay = 1500 + Math.random() * 500; setTimeout(function () { calculate(); loadingEl.style.display = "none"; totalsEl.style.display = "block"; resultsEl.style.display = "block"; }, delay); }); })();

Media/Images/Icons