Show your daily progress as a live heatmap on any site
Get a website widget that displays a live graphic of your progress, from data in a Google Sheet
We even have a web button you can deploy, to automatically update your Sheet with one click each day.
◻️◻️◻️◻️◻️◻️
Track daily habits
Exercise
Meditation
Journaling
Reading
Track creative output
Writing
Coding
Shipping
Drawing
Show accountability
Progress reporting
Social posting calendar
Campaign tracking
Safety checks
Show your progress for accountability, or just for some kudos
◻️◻️◻️◻️◻️◻️
Click the button, it automatically updates your Sheet
Which then automatically updates your widget
◻️◻️◻️◻️◻️◻️
①
Set up a Google Sheet & put our log button on a secret web page
②
Connect your Sheet and button to the tracker widget.
③
Embed the tracker widget anywhere with just an iframe.
Add your email to try it or get updates
Current features
Track progress in Sheets, via a web button
Generate a tracker widget iframe embed code (requires a Google API key)
window.addEventListener('message', e => { if (e.data.type === 'resize') { const iframe = document.querySelector('iframe'); // assumes one iframe if (iframe) iframe.style.height = e.data.height + 'px'; } });
window.onload = () => { const a = document.createElement('a'); a.innerHTML = 'Made by @markbowley'; a.setAttribute('href', 'https://markbowley.com'); Object.assign(a.style, { 'position': 'fixed', 'top': 'null', 'right': '0', 'bottom': '0', 'left': 'null', 'padding': '0.3rem 0.39999999999999997rem', 'margin': '1rem 1rem 1rem 1rem', 'line-height': '0.6rem', 'color': '#ffffff', 'backgroundColor': '#333333', 'textDecoration': 'none', 'borderRadius': '0.3rem', 'font-size': '0.6rem', 'font-weight': 'normal', 'cursor': 'pointer', 'transition': 'all .2s ease-in-out', 'z-index': '1000', 'box-shadow': '0 4px 6px -4px rgb(0 0 0 / 0.1)', 'font-family': '-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif' }); a.onmouseover = () => a.style.transform = 'scale(1.1)'; a.onmouseout = () => a.style.transform = 'scale(1)'; a.setAttribute('target', '_blank'); document.body.append(a); }