Identify Returning Visitors with the juid Link Parameter

What it does

Every profile in Justuno has a unique Justuno Profile ID, called a juid . When someone arrives on your site through a link that includes their juid , Justuno matches them to their existing profile and picks up right where you left off.

That means the visitor's history, traits, and segment membership are available on the first pageview — the one where your promotion actually fires.

https://yourstore.com/collections/new?juid=8f3c1e9a-4b72-4d51-9c08-2ea77b1d3f60

Why it matters

Justuno normally recognizes returning visitors using a cookie on their device. That works well, until it doesn't:

  • They're on a different device. They browsed on a laptop, but they read email on their phone.
  • Safari expired the cookie. Apple's tracking prevention caps most cookies at 7 days.
  • They cleared their cookies, or they're browsing in a private window.
  • The email opened in an in-app browser — Instagram, Gmail, Facebook — which keeps its own separate cookie storage.

In all of these cases, a loyal customer looks like a total stranger. You end up showing an email capture popup to someone who's been subscribed for two years, or offering a new-customer discount to a VIP.

The juid  parameter closes that gap. Some of the most common wins:

  • Stop asking for emails you already have. Suppress your capture popup for anyone arriving from an email campaign.
  • Show the right offer. VIPs, repeat buyers, and existing subscribers get relevant messaging instead of the acquisition offer.
  • Personalize immediately. Greet them by name or surface products in a category they've browsed before.
  • Connect the campaign to the session. See what happened on-site after the click, even when the click and the browse happen on different devices.

How it works

  1. Justuno assigns a juid  to a profile whenever it identifies someone — a popup signup, an on-site identify call, an order match, or Visitor ID.
  2. Justuno syncs that juid  to your email or SMS platform as a profile property.
  3. You reference that property in your campaign links.
  4. A visitor clicks. Justuno reads the juid , matches the profile, and merges it with the current session before evaluating any of your rules.
  5. Justuno removes the parameter from the address bar so your customer never sees it.

Their previous activity and this new session become a single profile. Nothing is lost or duplicated.


Before you start

  • The Justuno embed script or app must be installed on your site.
  • Your email/SMS platform needs to be connected to Justuno so the juid  property syncs.
    • Klaviyo is the only platform supported by default, please reach out if you need this support on another ESP/SMS platform.
  • Not every profile will have a juid  yet — see What if a profile doesn't have a juid ? below. This is expected, and coverage grows on its own.

Setup

Klaviyo

Justuno writes the ID to a Klaviyo profile property named juid . You can confirm it's syncing by opening any identified profile in Klaviyo and checking its custom properties.

To use it, add the parameter to the destination URL of any button or link in your template:

https://yourstore.com/collections/new?juid={{ person.juid|default:'' }}

The |default:''  filter is important. Without it, profiles that don't have the property yet can render broken text into the URL.

Already using UTMs? Add juid  alongside them with an & :

https://yourstore.com/collections/new?utm_source=klaviyo&utm_medium=email&utm_campaign=winback&juid={{ person.juid|default:'' }}

Prefer to leave the parameter off entirely when it's empty? Wrap it in a conditional:

https://yourstore.com/collections/new{% if person.juid %}?juid={{ person.juid }}{% endif %}

Both approaches work. An empty juid=  is harmless — Justuno ignores it.

This works in Klaviyo SMS templates using the same syntax.

Other platforms

The concept is identical everywhere; only the merge-tag syntax changes.

Platform Property name Example syntax
Attentive juid  (custom attribute) {{ juid }}
Braze juid  (custom attribute) {{${juid}}}
Iterable juid  (user field) {{juid}}
Salesforce Marketing Cloud juid  (data extension field) %%juid%%
Mailchimp JUID  (audience field) *|JUID|*

Check your platform's documentation if you're unsure — you're looking for however it references a custom profile field inside a link.

Anywhere else

The parameter isn't email-specific. It works on any link where you can insert the visitor's ID: push notifications, direct mail QR codes, partner links, or personalized ad destination URLs.


Testing it

  1. Pick a test profile in your ESP that has a juid  value and copy it.
  2. Paste it onto any page of your site: https://yourstore.com/?juid=PASTE_ID_HERE
  3. Load the page and open the Justuno debug view.
  4. Confirm the session shows the expected profile and segments, and that the parameter has disappeared from the address bar.

Then send a test campaign to a seed address and click through for real — this catches template syntax errors and any link-shortening quirks that only show up in a live send.


Best practices

Add a cache rule for the parameter. Because each recipient gets a unique URL, your CDN may treat every click as a different page and cache less effectively. On Cloudflare, add a Cache Rule that ignores juid  in the cache key. Most other CDNs have an equivalent setting. Shopify's CDN generally handles this on its own.

Exclude it from your analytics. GA4 and similar tools may otherwise report /?juid=abc  and /?juid=xyz  as separate pages, splitting up your reporting. Add juid  to your query parameter exclusion list.

Use it on your highest-intent campaigns first. Win-back flows, abandoned browse, post-purchase, and VIP campaigns get the most benefit, because those are the audiences where being recognized changes what the visitor should see.

Keep using your UTMs. juid  handles identity; UTMs handle attribution. They do different jobs and coexist fine.


FAQ

Is my customer data exposed in the URL?

No. A juid  is a random, opaque identifier. It isn't an email address, a hashed email, a name, or anything else readable. On its own it means nothing outside of Justuno, and Justuno strips it from the address bar as soon as the page loads.

This is deliberately safer than the common practice of putting a hashed email address in a link — a hashed email is still considered personal data under GDPR and can be reversed against a known list of addresses.

What if a profile doesn't have a juid ?

The link renders without the parameter and the visit proceeds normally — nothing breaks. If that person then identifies themselves on your site, Justuno creates a profile, assigns a juid , and syncs it back to your ESP. Their next campaign link will include it.

Coverage grows over time without you doing anything. If you'd like to accelerate it for your existing list, contact support about a backfill.

What happens if someone forwards the email?

The person who clicks would be matched to the original recipient's profile on that device. This is true of any personalized link, across every marketing platform. Justuno treats the match as provisional — if the new visitor logs in or identifies themselves on your site, that takes priority and corrects the session immediately.

Does this replace Visitor ID?

No, they complement each other. Visitor ID identifies traffic you have no prior signal for. The juid  parameter re-identifies people you already know who are arriving through a link you sent. Both feed the same profile.

Yes. Klaviyo, Attentive, Bitly, and other shorteners pass querystring parameters through their redirects. We recommend confirming with a live test send on your specific provider.

Do I need to do anything on the Shopify side?

No. The parameter is read on your storefront, so it doesn't need to survive into checkout.


Troubleshooting

The visitor still isn't recognized. Check the URL in the delivered email — view the rendered message, not the template. If it shows juid=  with nothing after it, that profile has no ID synced yet. If it shows raw template text instead of an ID, the merge tag syntax is off.

The parameter shows a literal merge tag like {{ person.juid }} . The property name doesn't match, or the tag was pasted as display text rather than into the link's URL field. Confirm the property exists on a test profile in your ESP, and edit the link's destination URL directly.

Analytics traffic looks fragmented. Add juid  to your analytics platform's query parameter exclusion list.

The parameter stays visible in the address bar. This usually means the Justuno script didn't load on that page. Confirm the embed is present sitewide, including on landing pages built by third-party tools.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us