How PROOF works

PROOF is infrastructure.
Your storefront is the destination.

Athletes connect Strava once. Every verified activity credits their lifetime profile and your brand's program. When they cross a threshold, they're rewarded on your storefront, in your voice — not ours. Here's the full story, from install to first redemption.

01 · The integration pattern

Earn globally. Redeem per-brand.

An athlete's lifetime effort and identity travel with them across every brand program on PROOF. Their reward balance at your brand starts at zero the day they connect — and every subsequent mile at any sport you allow credits your program. Each brand funds their own rewards out of their own margin.

PROOF layer

Universal. GPS-verified. Effort-normalized. One athlete, one lifetime PROOF-miles count across every sport and every brand they've ever connected to.

Brand layer — yours

Your sport allowlist, your milestone ladder, your welcome bonus rules, your rewards, your email voice. PROOF provides the verified data; you decide what it unlocks.

The athlete

One Strava connection powers every brand they care about. Their PROOF tier and three-signal profile travel. Their brand-specific rewards don't — each relationship earns fresh.

02 · On your storefront

No PROOF-branded page. Ever.

Your athletes live inside your storefront. PROOF writes their tier, brand PM, rewards, and progress directly into Shopify customer metafields. A small Liquid section renders that data in your theme's voice — same typography, same colors, same design language as the rest of your site.

Install footprint

Brand's developer downloads a bundle from the PROOF portal: proof-loyalty-account.liquid, proof-loyalty.css, proof-loyalty.js. Drop into theme's sections/ folder. Add one reference to the customer account template. Publish.

Time to install

Two to four hours for an experienced Shopify developer. We provide step-by-step install docs per theme. Not an App Block, not a JavaScript widget — native Liquid rendering metafield data.

Brand-themed by default

CSS scoped to the loyalty section with variable overrides — your theme's colors, fonts, spacing all inherited. We ship sensible defaults; override anything you want.

Post month 9–12: one-click install via Shopify App Store. Hand-install until then.

03 · The athlete experience

From connection to redemption.

Four moments define the experience. Each one happens on your storefront, in your voice. PROOF is invisible — the athlete sees your brand, your tier names (if you've customized), your emails, your discount at checkout.

01

Signup — from your site

Athlete clicks Connect Strava on your Riders Club landing page. Strava OAuth runs. PROOF matches or creates the athlete record, creates your brand connection, fires the welcome bonus immediately, and starts importing ride history asynchronously. They land back on your account page with their loyalty section populated. They never see a PROOF signup step.
02

Daily — while they ride

Every Strava-verified activity flows through PROOF's 9-gate fraud pipeline. Clean activities convert to PROOF miles via the Effort Index and credit two ledgers: lifetime PM (all sports, forever) and your brand PM (only the sports you allow, only during your active relationship). Invisible background work.
03

Milestone — when they cross a threshold

Your ladder fires. PROOF sends a webhook to your ESP with the milestone details and a signed loyalty_redeem_url. Your flow sends the athlete an email in your brand voice. Their account-page loyalty section updates in real time with the new active reward.
04

Redemption — when they're ready to shop

Athlete clicks Shop with your reward — from wallet or email. At that moment, PROOF creates a single-use Shopify discount code locked to their customer email, then deep-links them into your storefront with the code pre-applied. No code to copy. No code to leak. One click to checkout.
04 · The rewards toolkit

Three ways to reward effort.

Milestones build long-term engagement. Challenges drive campaign-scale activity. Anniversary bonuses celebrate retention. Three primitives — all running through the same credit pipeline, all surfacing on the athlete's account page in your theme's voice.

Milestones

Permanent thresholds. Lifetime value.

Set a ladder of brand PM thresholds — 500, 1,000, 2,500, 5,000, and beyond. Each crossing issues a reward the athlete keeps. The backbone of your program.

Reward types: store credit (Shopify discount), free shipping, early drop access, or custom Shopify tag for your own theme / Klaviyo logic.
Immutable: once issued, a reward stays — even if you later change the ladder. Config changes are forward-only by default, with a per-change "apply retroactively?" toggle.
Expiry per milestone: you set how long an earned reward stays active. Expired rewards don't auto-rollover.

Permanent · Per-brand PM threshold · Issued on crossing
Challenges

Time-bound, window-scoped goals.

Launch a December Miles campaign, a "beat your March" challenge, or a first-30-days-after-join improvement goal. Conditions built on total PM, total miles (optionally filtered by sport), ride count, unique days, or improvement vs. prior period.

Window types: calendar month, fixed date range, or rolling N days from enrollment.
Eligibility: optional gates on minimum pace, tier, or lifetime PM. Athletes below the gate never see the challenge — no tempting unreachable rewards.
Rewards: same three types as milestones — credit, bonus PM, or perk tag. No new reward plumbing.

draft → scheduled → active → ended → archived
Anniversary bonus

One month a year, unconditional.

During each athlete's connection-anniversary month with your brand, every brand PM they earn is multiplied by the value you set. No pace gate. No tier gate. A celebration of the year they've been with you.

Configurable: 1.5× / 2× / 2.5× / 3×, default 2×.
Per-brand, per-athlete: athletes connected to multiple brands get a separate anniversary month for each, naturally spread across the calendar.
Win-back moment: a lapsed athlete who returns during their anniversary month is precisely the outcome the bonus is designed to encourage — the multiplier makes their return feel rewarded.

Month 12 · Month 24 · Month 36 · forever

All three primitives live in the same brand dashboard. All reuse the same credit pipeline. All surface on the athlete's account page in your theme's voice — no PROOF-branded interruption between the earn and the reward.

05 · The data flow

Five events. One canonical interface.

PROOF fires HMAC-signed webhooks to the ESP endpoint you configure in the portal. ESP-agnostic — Klaviyo, Mailchimp, Sendgrid, Customer.io, or a generic webhook into Zapier/Make. You build the flows in your ESP, author the copy in your voice. PROOF is the signal layer; delivery is yours.

proof.athlete_connected
Fires the moment an athlete connects your program. Welcome bonus already credited. Perfect for your welcome email flow.
proof.activity_verified
Every verified activity that credits your brand. Optional — most brands subscribe for weekly-digest flows but not per-activity email.
proof.milestone_reached
Threshold crossing. Payload includes reward value, expiry, restrictions, and the signed redemption URL. The primary reward email trigger.
proof.pace_changed
Athlete moves into or out of a pace category (Steady, Moderate, etc.). Use for engagement flows without writing your own pace logic.
proof.tier_advanced
Athlete crosses a PROOF tier threshold (Recruit → Contender → Rival → Elite → Legend → Myth → Apex, plus infinite Marks above Apex). Recognition moment. No economic unlock required.

Every event carries an HMAC signature verifiable with your secret. Your webhook delivery dashboard shows every event, success/failure, retry status, and lets you inspect payloads.

06 · Verification

Every activity, 9 gates.

Every Strava activity PROOF ingests passes through 9 independent fraud checks before crediting an athlete. GPS-only at launch — session sports without GPS (strength, yoga) aren't verifiable and aren't accepted. The PROOF Effort Index (PEI) normalizes effort across sports so every brand program uses a single comparable unit.

9 fraud gates

Ownership · GPS presence · Not manual · Sport allowlist · Minimum distance · Maximum speed ceiling · Daily activity cap · Velocity anomaly · Idempotency. Silent drops — athlete sees nothing; brand isn't charged.

PEI — multi-sport

1 road cycling mile = 1 PM. Running, swimming, rowing, hiking, trail running, MTB, gravel — all convert via sport-specific multipliers. Your brand picks which sports credit your program.

Identity rails

Strava at launch. Garmin Connect around month 5–6 post-launch. Apple Health, Peloton, Whoop, Zwift on the roadmap. Athletes can layer multiple rails to the same identity.

07 · Security & privacy

Scoped by default.

Brand isolation

Your portal session can only read and write data scoped to your brand. Database row-level security enforces it at the query layer — not a UI convention. Your athletes' data stays yours. Other brands' data stays theirs.

Discount code security

Every code is single-use and locked to the athlete's email at Shopify via prerequisite_customer_ids. If someone forwards a code, it won't apply — only the earning athlete can redeem it.

Webhook integrity

Every outgoing webhook carries an HMAC signature. Reject anything unsigned. Your ESP endpoint verifies with a secret you set at integration time.

Audit log

Every admin action in the brand portal is logged with actor, timestamp, and reason. Config changes, manual refunds, suspensions — full history available for compliance.

08 · Getting started

Two to three weeks, concierge.

We're onboarding a small number of founding brands. Every wave-2 brand gets hands-on setup from the PROOF team — not self-serve onboarding. Here's the shape.

Day 1–3

Discovery

Short call to understand your brand, your customers, your current loyalty motion, your sports mix. We co-design your milestone ladder, welcome bonus rules, and sport allowlist. You get portal access to review.
Week 1

Setup

Shopify OAuth connection, Liquid template install on your customer account page, ESP webhook configuration. PROOF admin reviews your program design. You author your email flows in your ESP, using our cookbook for event-by-event starter copy.
Week 2

Test mode

Inject synthetic activities through your full pipeline via the portal's test button. Verify webhook delivery, email flows, metafield rendering, discount generation, and deep-link redemption end-to-end. Iterate until you're happy.
Go live

Launch day

PROOF approves the active transition. Your Riders Club is live. Athletes can connect from your site. Every verified ride earns your program. You see members, activities, and rewards flow in real time from the brand dashboard.
Ready?

Get early access program.

Tell us about your brand and we'll be in touch within two business days.

Get early access →