WhatsApp product sharing on Shopify: tracking dark social
Shoppers already send your product pages to friends on WhatsApp; analytics calls it Direct. How a share button with a UTM template makes that traffic visible.
Open your Shopify analytics and look at the biggest traffic source. For most small stores it is Direct, and Direct is usually described as people who typed the address or used a bookmark. Almost nobody does either. What that number mostly contains is links pasted into WhatsApp, iMessage, Instagram DMs and Slack, opened in an in-app browser that sends no referrer. Marketers call it dark social, which sounds sinister and just means private.
WhatsApp is the largest part of that in most of the world, and it is also the one you can do something about, because a share button can decide what the link looks like before the shopper pastes it. This article is about that: what happens when a shopper shares a product on WhatsApp today, why your reports cannot see it, and how the Share on WhatsApp block in Beacon Messenger turns the same behaviour into a source you can name.
What sharing looks like without a button
A shopper likes a jacket and wants a second opinion. On a phone, the fastest route is the browser's share sheet or copying the address bar. Either way the link that lands in the chat is the bare product URL. Their friend taps it, WhatsApp opens the page in its in-app browser, and that browser, by design, passes no referrer to your store. Shopify records a session with no source, and it goes in the Direct bucket next to the bookmark users who do not exist.
If the friend buys, the order's conversion summary shows the same nothing. You know the sale happened; you do not know that it came from a recommendation, that recommendations are your best channel this month, or which products people actually send each other. That last one matters most, because the products shoppers share are not always the ones you would guess, and they are the ones worth photographing better.
What the share block changes
Beacon Messenger's Share on WhatsApp block is a theme app extension you add to a product page from the theme editor. It renders a button, styled solid, outline or text-only, in three sizes, that links to WhatsApp's share endpoint with a prefilled message. The message comes from a template you edit in the block settings. The default is Check this out: {title} {url}, where {title} becomes the product's title and {url} the full product address on your store's domain. When the shopper taps, WhatsApp opens with the text ready and asks which contact to send it to; the shopper never types the link and never touches your address bar.
That is the whole mechanism, and it is also the opportunity. Because you write the template, you control the link, and a link can carry parameters. Change the default to Check this out: {title} {url}?utm_source=whatsapp&utm_medium=share&utm_campaign=product-share and every link a shopper sends through the button arrives tagged. The friend who taps it starts a session that Shopify attributes to a source called whatsapp and a medium called share, and if they buy, the order's conversion details show it.
Product URLs on Shopify do not carry a query string of their own, so appending one with a question mark is safe. The block URL-encodes the whole message, so the ampersands survive the trip through WhatsApp. On the storefront the parameters do nothing; Shopify's theme ignores them and the page loads normally.
Reading the result in Shopify
Shopify's marketing reports group sessions and sales by UTM source, medium and campaign, and the sales attributed to marketing report counts only traffic that arrived with those parameters or through a connected marketing app. Once the share template is tagged, whatsapp appears as a row. For a single product, the order conversion summary shows the UTM values on the session that placed the order, so you can confirm from one order that the chain works before you trust the aggregate.
Two limits to know. First, you are measuring shares that went through the button, not all WhatsApp shares; the shopper who copies the address bar still lands in Direct. The button's job is to make its route the easier one, which on a phone it is. Second, the parameters name the channel, not the person, and that is the right amount of tracking: a private recommendation stays private, you just learn that it happened.
| Share route | Referrer sent | Where it lands in reports |
|---|---|---|
| Address bar copied into WhatsApp | None | Direct |
| Browser share sheet | None | Direct |
| Share block, default template | None | Direct |
| Share block, template with UTM | None, but URL is tagged | Source whatsapp, medium share |
Writing a template people actually send
The template is the message your customer sends to a friend, in their voice, so it should read like something a person would write. Check this out: {title} is fine. Anything with your brand name in capitals, an exclamation mark, or a discount code is not; shoppers delete text that makes them sound like an advert before they hit send, and some will abandon the share rather than edit it. The link is the payload, and it survives editing better when it sits at the end.
- Keep the title placeholder. A link preview in WhatsApp shows the page title anyway, but the text above it is what the friend reads first.
- Use lowercase, single-word UTM values. whatsapp, share and product-share are enough; Shopify groups by exact string and WhatsApp-share and whatsapp_share become two rows.
- Do not add a discount code to the template unless you want every recipient to have it. A shared code is a public code within a week.
- If you sell in more than one language, the block reads your theme's translations, but the template is one string; write it in the language of the market the template is published for, or keep it to the title and the link.
Where to put the button
Under the buy button, small, outline or text style. The shopper who shares has usually decided not to buy yet; they want a second opinion, and a share button that shouts competes with Add to cart for no reason. On the product page it uses the product's title and URL. On any other page it uses the page title and the current path, so it also works on a collection or a lookbook, with the same template.
It is a separate block from the chat button, and you can run one without the other. Stores that get most of their orders through conversation, the ones our chat button guide is written for, tend to add both: the chat button brings the shopper to you, the share button sends the product to the person who will talk them into it.
What the numbers tend to say
Merchants who tag the share link generally find two things. The share rate is low, a fraction of a percent of product views, which is normal and does not make it unimportant, since a share reaches someone who already trusts the sender. And the products people share are skewed toward gifts, higher prices and anything that needs a yes from someone else at home. That list is useful even if the channel never becomes big: it tells you which product pages are doing the work of persuading two people at once.
The button is included in every Beacon Messenger plan, including the free one, because it costs nothing to serve: it is a link, rendered by Shopify with your theme, with no script and no request to us. The only setup is the template, and the only maintenance is remembering to look at the whatsapp row once a month.
Frequently asked questions
Why does WhatsApp traffic show as Direct in Shopify analytics?
Links opened from WhatsApp load in an in-app browser that sends no referrer, so Shopify has nothing to attribute the session to and files it under Direct. The only way to make the source visible is to put it in the link itself, with UTM parameters, before the shopper sends it.
Can I add UTM parameters to a WhatsApp share button on Shopify?
Yes. In Beacon Messenger's Share on WhatsApp block, edit the message template and append parameters to the {url} placeholder, for example {url}?utm_source=whatsapp&utm_medium=share. Every link sent through the button then carries them, and Shopify's marketing reports show whatsapp as a source.
Does the share button send the message to my business number?
No. It opens WhatsApp's share endpoint with the text prefilled and no recipient, so the shopper picks the friend or group to send it to. Messages to your business go through the separate chat button, which does target your number.
Will UTM parameters on a product link break the page or hurt SEO?
No. Shopify product pages ignore unknown query parameters and render normally, and the canonical tag on the page points to the clean URL, so search engines treat the tagged link as the same page. Shopify's own reports and Google Analytics both read the parameters from the session.
More guides
- How to add a WhatsApp chat button to your Shopify store (2026)
- How to send Shopify order confirmations and shipping updates over WhatsApp with the official Cloud API
- Cash on delivery on Shopify: confirm orders over WhatsApp before you ship
- Recovering abandoned checkouts on Shopify with WhatsApp, the compliant way
- Why WhatsApp apps get your number banned: linked device vs API
- How a "free" WhatsApp app for Shopify ends up charging you
- Por qué una app de WhatsApp "gratis" para Shopify te cobra
- Pushdaddy or SuperLemon alternative: WhatsApp apps compared
- How to verify Shopify WhatsApp notifications were delivered
- Chat button still on your store after uninstalling the app?
- WhatsApp API pricing changes on Oct 1, 2026: Shopify impact
- Setting up the WhatsApp Cloud API with Meta's MCP and an AI agent
- WhatsApp chat outside business hours: what shoppers should see