> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# QR codes and links

> Create a trackable QR code or chat link that opens a WhatsApp conversation and drops the person straight into a flow.

A growth tool is a link or a QR code that opens a chat with you. Someone scans the code on
your shop window, taps send, and their first message lands in your [Inbox](/inbox/overview)
already tagged with where they came from — and an [Automation](/automation/overview) can
greet them before you read it.

Each growth tool belongs to one profile, not to the whole Workspace. Create it while the
right channel is selected in the channel bar, and you'll only ever see that profile's tools
on the page.

## Before you start

Growth tools live in the sidebar under **Messaging → Growth Tools**.

<Warning>
  Growth tools only work on channels a person can reach by tapping a chat link: **WhatsApp,
  Facebook, Instagram and Telegram**. They are **not available on SMS, TikTok or Live Chat**.
  With one of those profiles selected, the sidebar item is still visible but does nothing —
  clicking it shows a message with a **Switch profile** button that jumps you to a
  compatible profile.
</Warning>

Two other things gate the page:

* **You need a connected channel.** With none connected, the page shows a prompt to connect
  one instead of the grid. See [Channels](/channels/overview).
* **Your role needs the permission.** Growth tools sit behind their own permissions —
  viewing them and creating or editing them are separate. If a team member can't see
  **Growth Tools** in the sidebar at all, that's why. See
  [Team members](/account/team-members).

There is no limit on how many growth tools you can create.

## Create a growth tool

<Steps>
  <Step title="Select the right profile">
    Pick the channel you want people to land in from the channel bar at the top. The modal
    has no channel picker — it creates the tool for whatever profile is selected, and the
    page confirms this with **Created for the profile selected in the channel bar above**.

    Lead with WhatsApp. It's the channel most people already have open.
  </Step>

  <Step title="Open the modal">
    Go to **Messaging → Growth Tools** and select **New growth tool**.
  </Step>

  <Step title="Name it">
    Give it a name you'll recognise later, like `Spring campaign link` or `Window QR`. Up to
    80 characters.

    The name matters more than it looks: it's what gets stamped on every Contact the tool
    brings in, and it's the row label in your reports.
  </Step>

  <Step title="Choose the type">
    Two options under **Type**:

    * **WhatsApp link** (called **Ref link** on Facebook, Instagram and Telegram) — a plain
      URL you paste anywhere.
    * **QR code** — the same destination, rendered as a scannable code you can download.

    They point to the same place. The only difference is how you hand it out and whether the
    page counts **scans** or **clicks**.
  </Step>

  <Step title="Check the ref">
    DMLY fills the ref for you from the name — uppercased, with anything that isn't a letter
    or number turned into an underscore, so `Spring campaign link` becomes
    `SPRING_CAMPAIGN_LINK`. Edit it yourself if you want something shorter; once you do,
    DMLY stops rewriting it. Letters, numbers, dashes and underscores only.

    On WhatsApp this field is labelled **Prefilled message (keyword)**, because that's
    exactly what it is — the text sits ready in the person's message box. On the other
    channels it's **Ref parameter** and stays invisible to them.
  </Step>

  <Step title="Point it at a flow (optional)">
    Under **Starts flow (optional)**, pick the flow that should greet whoever arrives, or
    leave it on **No flow — just opens the chat**. Only flows that are **Active** on this
    same channel appear in the list.
  </Step>
</Steps>

<Tip>
  On WhatsApp, the ref doubles as a keyword. Because the text is prefilled in the person's
  message box, any keyword automation you already run on that word will match it. Set the
  ref to something you'd never type by accident, so a normal customer message can't
  trip it.
</Tip>

## What you get back

Each tool appears as a card showing the QR image (or a link icon), the name, the profile
it belongs to, the raw destination link, and its count so far.

**The destination** is a normal chat link for that platform:

| Channel   | The link people land on           |
| --------- | --------------------------------- |
| WhatsApp  | `wa.me/<your number>?text=<ref>`  |
| Telegram  | `t.me/<your bot>?start=<ref>`     |
| Instagram | `ig.me/m/<your handle>?ref=<ref>` |
| Facebook  | `m.me/<your page>?ref=<ref>`      |

**The link you share** is different — it's a short tracked address ending in `/go/` and a
code. That's what counts the click before bouncing the person on to the chat link above. If
your Workspace has a branded domain set up, the tracked link uses it.

From each card's menu:

* **Copy link** — copies the tracked link to your clipboard. Use this one everywhere.
* **Download QR** — saves an SVG file (QR codes only). SVG scales cleanly, so the same file
  works for a business card and a shopfront poster.
* **Delete** — removes the tool.

<Note>
  The QR code encodes the tracked link, not the chat link. That's how a printed code still
  gets counted.
</Note>

## Where to put it

<Columns cols={2}>
  <Card title="Shop window or counter" icon="store">
    A QR code at eye level with one line of copy: "Scan to book." Someone standing outside
    after closing time becomes a Contact instead of a lost walk-in.
  </Card>

  <Card title="Receipts and packaging" icon="receipt">
    A QR code on the receipt or the box, pointed at a flow that asks how it went. Pairs well
    with [Reputation](/reputation/overview).
  </Card>

  <Card title="Instagram bio and link-in-bio" icon="instagram">
    Paste the tracked link. Give each placement its own tool so you can tell the bio link
    from the story link.
  </Card>

  <Card title="Flyers, posters and ads" icon="file-lines">
    One tool per print run. When the numbers come in, you know which flyer earned its cost
    and which didn't.
  </Card>
</Columns>

<Tip>
  Make a separate tool per placement, even when they all start the same flow. The tool is
  the only thing telling you where a person came from — one shared tool for everything tells
  you nothing.
</Tip>

## What happens when someone scans or clicks

1. They tap the QR code or the link. DMLY counts it and sends them on to the chat app.
2. The chat opens with your business. On WhatsApp they see the ref sitting in the message
   box; on the other channels the ref travels invisibly.
3. **They have to send the message.** Opening the chat isn't enough — nothing reaches you
   until they tap send. This is the gap between your click count and your conversation count.
4. Their message arrives in your Inbox as a new conversation.
5. DMLY stamps the tool's name onto the Contact as their source, replacing the plain channel
   name a brand-new Contact starts out with. A real source you set yourself is left alone.
6. If a flow matches, it starts.

<Warning>
  On WhatsApp, a growth tool only attributes and triggers on a person's **first ever**
  message to that number. An existing Contact who scans your QR reaches your chat normally,
  but the tool won't claim them or start its flow. Facebook, Instagram and Telegram don't
  have this limit.
</Warning>

## Greeting them with a flow

**On WhatsApp** you have two ways, and the flow builder is the better one. Open a flow on
your WhatsApp channel, set its trigger to **User clicks a link**, then under **Which link
triggers this?** choose either:

* **A specific link** — only that tool starts this flow. Anything else you share won't.
* **Any of my links** — any growth tool on this channel starts it. Good for one universal
  welcome.

The flow must be Active and published. See
[Flow builder](/automation/flow-builder) and [Triggers](/automation/triggers).

The **Starts flow (optional)** field in the growth tool modal works too. If you're building
something new, use the trigger — it's where you'd look for it later.

**On Facebook, Instagram and Telegram**, the modal's **Starts flow (optional)** field is your
only option. The **User clicks a link** trigger isn't offered on those channels.

<Note>
  When a growth tool starts a flow, that flow takes the conversation. Your normal keyword
  and welcome triggers are skipped for that message, so the person doesn't get greeted
  twice. If no growth flow matches, the message falls through to your usual triggers as
  normal.
</Note>

## Reading the numbers

**On the card.** Each card's footer shows `Starts "<flow name>"` or **Opens the chat** on
the left, and the count on the right — labelled **scans** for QR codes and **clicks** for
links. New tools start at zero.

**On the Overview report.** Two things to look at, both scoped to the selected profile:

* **Growth clicks** — the total across every tool on that channel.
* **Contact sources** — where your contacts came from. Because the tool's name is stamped on
  every Contact it brings in, your tools show up here by name.

Read the two together. That's why the name you give a tool matters. A big **Growth clicks**
number with barely any contacts to match means people are reaching your chat and not sending
— usually a QR code with no reason to scan next to it, or a flyer promising something the
chat doesn't deliver.

<Note>
  Telegram counts twice. The tracked link counts the tap, and Telegram counts the arrival
  again when that person's message reaches you, so one person can add two to your click
  count. It happens on every arrival through the link, not just their first. Only a raw
  `t.me` link you've pasted by hand counts once.
</Note>

{/* TODO(verify): a Contact's source is the tool's *name* as a plain string, so renaming a
tool may strand the contacts it already brought in under the old name in Contact sources.
Mechanism is confirmed in code; whether the rename consequence is intended (or handled
elsewhere) is not. If confirmed, add a warning against renaming a live tool. */}

## Deleting a tool

Use **Delete** from the card menu and confirm. DMLY warns you that "the link will stop being
promoted in your assets."

<Warning>
  Deleting a tool doesn't unprint your posters. Anyone who scans a deleted QR code lands on
  a home page instead of your chat. If a code is out in the world on something physical,
  leave the tool alone — a tool costs you nothing to keep.
</Warning>

## Troubleshooting

<Accordion title="Clicks are going up but nobody appears in my Inbox">
  People are reaching the chat and not sending. That's the normal shape of the problem — the
  link did its job. Check that the prefilled text makes sense to read (it's the first thing
  they see), and that whatever you promised on the poster is obviously about to happen.
</Accordion>

<Accordion title="The flow doesn't start">
  Work through these in order:

  * Is the flow **Active** and published? Only Active flows are offered and only Active flows
    run.
  * Is the flow on the **same channel** as the growth tool? They can't cross profiles.
  * If the trigger is set to **A specific link**, is it the same tool the person actually
    used?
  * On WhatsApp only: is this person already a Contact? Growth attribution only fires on a
    brand-new Contact's first message.
</Accordion>

<Accordion title="I can't find Growth Tools in the sidebar">
  Either your role doesn't have the growth permission — ask an admin, see
  [Team members](/account/team-members) — or you're on a channel that supports it but you're
  looking under the wrong group. It sits under **Messaging**.

  If you can see it but clicking does nothing, you're on SMS, TikTok or Live Chat. Use the
  **Switch profile** button in the message that appears.
</Accordion>

<Accordion title="Two tools with the same ref">
  Nothing stops you creating two tools on one channel with the same ref, and if you do, which
  one claims an arriving Contact isn't predictable. Keep refs distinct — the auto-generated
  ones from your names usually are.
</Accordion>

## Next steps

<Columns cols={2}>
  <Card title="Flow builder" icon="diagram-project" href="/automation/flow-builder">
    Build the flow that greets people when they arrive.
  </Card>

  <Card title="Triggers" icon="bolt" href="/automation/triggers">
    Set a flow to start on **User clicks a link**.
  </Card>

  <Card title="Tags and segments" icon="tags" href="/contacts/tags-and-segments">
    Group the Contacts your tools bring in.
  </Card>

  <Card title="Analytics" icon="chart-line" href="/analytics/overview">
    Find Growth clicks and your contact sources.
  </Card>
</Columns>
