Reach links, attribution and tracking
This answers the question every owner asks: "That Instagram post, that flyer, that Google ad - did it actually bring me paying customers?"
Revively does it with three pieces:
- Trackable links - short
rvly.auURLs and QR codes that carry the source inside the code. - Visitor capture - when someone lands on your booking site, Revively records where they came from.
- Conversions - when that visitor books, signs up, or pays, the sale is credited back to the source.
How it works in one line
Someone scans your flyer QR, lands on your booking page, comes back a week later and books a massage. That booking and its revenue show up under Flyer in Reach → Attribution, and the booking itself says Came from flyer.
Trackable links
Every link Revively generates for sharing is a short URL like https://rvly.au/r/AbC123. The short code is the campaign identity.
We never add UTM tags to links or QRs we generate. Long ?utm_source=... tails make QR codes denser and harder to scan, look ugly in an Instagram bio, and are stripped by some in-app browsers. The short code cannot be stripped.
Links you already have
Some links are created for you - you do not have to set anything up:
| Link | Where to find it | Counts as |
|---|---|---|
| Bio link (Instagram profile) | Settings → Online Sharing | |
| Booking QR (reception flyer) | Settings → Online Sharing | Flyer / QR |
| Event, package, membership, course, program, service, product and public form share links | The share block on each record | A share of that item, labelled with the item name |
| Links inside Reach email campaigns | Automatic when the campaign sends | Email, credited to that campaign |
The bio link and the booking QR point at the same booking site on purpose. Keeping them separate means a scan at your front desk is not counted as Instagram.
Creating your own link
Go to Reach → Links → New link…
| Field | What it does |
|---|---|
| Label | Your name for it, for example "Autumn flyer" or "Gym noticeboard". |
| Where will you use this? | Instagram, Facebook, Google, Flyer / QR, Email, Website, or Other. This sets the source the visit is reported under. |
| Destination | Booking page, storefront home, or a specific service, class, package, course, program, event or product. Custom path for anything else. |
| Destination target | The specific class, service or event, when the destination needs one. |
| Campaign name | Optional. Type a name and Revively creates a tracking campaign so several links can roll up together, for example "Spring open day". |
| Status | Archive a link to hide it from the list. Archived links keep working, so printed QR codes never break. |
Save, and the drawer shows the short URL with a copy button and a downloadable QR PNG.
Use the short URL as the destination in ads too. If Google or Meta appends gclid / fbclid to it, those are carried through and the visit is correctly reported as paid rather than organic.
What gets tracked
Tracking happens on your booking site and storefront, on the server, so it works even when the visitor blocks scripts.
- One touch is recorded per landing session, not per page view. Coming back within 30 minutes on the same path does not create a second touch.
- A first-party cookie (
_rv_vid) remembers the browser for 180 days so a visit today can be credited when they book next week. - Each touch stores the source, campaign, landing page, device type, and approximate country/region - never a raw IP address.
- Bots, link previews, prefetches, and browsers sending Do Not Track or Global Privacy Control are skipped.
Visits we deliberately do not count
Operational QRs are not marketing. Scanning one means "I am already a customer" or "I am staff", so these never create a source:
- Class and reception check-in QRs
- Event ticket QRs
- Booking confirmation links in SMS
- Form invitations sent to a named person
- Customer metrics QRs and staff-only links
Traffic you did not tag
For people who arrive without one of our links, Revively works out the source from what the browser sends:
- UTM tags on the URL (
utm_medium=cpcbecomes paid search,utm_medium=emailbecomes email, and so on). - Ad click IDs -
gclidandmsclkidmean paid search,fbclidandttclidmean paid social. - Referrer - a search engine becomes organic search, a social network becomes organic social, any other site becomes a referral.
- Nothing recognisable becomes Direct.
Instagram is the common trap here: its in-app browser usually sends no referrer at all, so untagged Instagram traffic lands as Direct. That is exactly why the bio link is worth using.
Conversions
When a tracked visitor does something worth money, Revively records a conversion and freezes the source on it, so old reports never shift:
| They do this | Recorded as |
|---|---|
| Create an account or check out as a guest | Signup |
| Book online | Booking |
| Buy a service, product, package or course | Purchase |
| Join a membership | Membership |
| Enrol in a class or buy an event ticket | Enrolment |
| Submit a public form | Lead |
- Last touch wins by default, looking back 30 days. The first touch is kept too (90 days) and is included in CSV exports.
- Revenue is net of refunds.
- Bookings your team takes by phone or at the desk stay unattributed - there is no digital trail to follow. Set Source on the customer manually for those.
Where you see the results
Reach → Attribution - visitors, new customers, bookings, revenue and visitor-to-customer rate with period-over-period change, trend charts, a revenue-by-source donut, top links, and expandable Sources, Campaigns and Unmatched UTMs tables. Pick any date range.
Reach → Links - one row per link: Used on, Destination, Campaign, Clicks, Landings, Bookings, Revenue, Status. Clicks come from the short URL; landings are people who actually arrived.
Campaign → Status - the send funnel: Audience, Delivered, Opened, Clicked, Converted.
Campaign → Attribution - touches, bookings and revenue for that one campaign, plus spend and ROAS if you have entered spend.
Booking drawer - a read-only Came from stat on bookings that were attributed.
Customer record - Source is filled in automatically for online signups when it is still blank, and stays editable. If Reach knows something more specific than the picklist (like a link label), it is shown under the field.
Reports → Overview - new customers by source, from the customer Source picklist.
Unmatched UTMs
If ad traffic arrives with a utm_campaign name Revively does not recognise, it is listed under Unmatched UTMs on the Attribution tab. Use Promote to turn that name into a tracking campaign - past visits and conversions for it are backfilled. High-traffic names are promoted automatically overnight.
Websites and embedded widgets
A booking widget embedded in your own site is best effort: Safari and other browsers partition cookies inside an iframe, so some visitors cannot be linked back to their original source. For the campaigns you care about measuring, point the button on your website at a trackable link instead of only embedding the widget.
Settings and privacy
Under Settings → Reach sending domain:
- Track where visitors come from - on by default. Turning it off stops new visitor capture entirely.
- Keep landing history (days) - defaults to 400. Older landing records are pruned automatically; conversions already recorded are kept.
Privacy posture:
- IP addresses are hashed, never stored raw.
- Visitor records belong to your account only - there is no cross-business profile and no data sold or shared.
- First-party cookie only. No third-party pixel, no fingerprinting, no Google Analytics or Meta Pixel on your booking site.
- Do Not Track and Global Privacy Control signals are honoured.
Troubleshooting
Everything says Direct. You are sharing raw booking URLs. Copy the bio link from Settings → Online Sharing, put the flyer QR at reception, and create links in Reach → Links for anything else you post.
Clicks but no landings. The click counter fires on the short URL; a landing needs the page to actually open. A big gap usually means bots, link previews, or people scanning and cancelling.
A booking I know came from Instagram is unattributed. They likely booked on a different device, or more than 30 days after their last visit, or your team entered the booking manually. Set Source on the customer by hand.
Revenue looks lower than my sales report. Attribution revenue only includes online conversions tied to a tracked visitor, net of refunds. In-person and staff-entered sales are not in it.