This guide explains how to add dynamic route cards to a WordPress page built with Elementor, using Google Sheets as the data source.
Objective: fetch dynamic data from a source like Google Sheets and render it on a WordPress site without a custom backend.
Create a sheet with these headers (case-insensitive):
titledatetimedistancedescbgClassstrava (or link / url)Example CSV data:
title,date,time,distance,desc,bgClass,strava
Ruta Larga,2026-03-29,07:00,80,Ruta de fondo,placeholder-bg-1,https://strava.com/...
Ruta Corta,2026-03-30,08:00,35,Ruta de recuperacion,placeholder-bg-2,https://strava.com/...
Comma-separated values (.csv).For image mapping by bgClass, upload files named exactly as:
placeholder-bg-1.pngplaceholder-bg-2.pngplaceholder-bg-3.pngplaceholder-bg-4.pngThe script combines HERO_IMAGE_BASE_URL + bgClass + ".png".
Open elementor_routes.js and verify:
var ROUTES_CSV_URL = 'YOUR_PUBLISHED_CSV_URL';
var HERO_IMAGE_BASE_URL = 'https://innovumabot.com/wp-content/uploads/2026/03/';
var ROUTES_MOUNT_SELECTOR = '#routes-track';
<script> block, or load it through a WordPress custom code method.Minimal required mount node:
<div class="routes-container">
<div class="routes-track" id="routes-track"></div>
</div>
Check the following:
NN km.bgClass maps to the uploaded image files.Image does not show:
HERO_IMAGE_BASE_URL path.Cards render without expected style:
No cards appear:
This pattern lets you maintain route/event content in Google Sheets while automatically rendering it in a WordPress Elementor page. It is a practical no-backend approach for dynamic, non-technical content updates.
This project is licensed under the MIT License.
InnovUmabot | https://innovumabot.com
This tool was vibe-coded with AI with strict human supervision.