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

# Send your live link from your messaging tools

> Send your study's live link from Braze, Intercom, and other messaging tools, with each participant's ID in the link.

Send your study's live link from the tool you already use to message customers, with each participant's ID and attributes filled into the link. For the checkout study, that means sending the link to shoppers when they abandon checkout at the payment step, with their user ID and plan saved on the interview.

**Before you start**

* The study is live and you have its live link. See [Share your study](/guides/broadcast-study).
* The attributes you want to pass, such as a user ID or plan, already exist on your users in the tool.

## Build the personalized link

Every tool on this page follows the same pattern: take the live link, add `meta_` parameters, and replace each value with the tool's placeholder for a user attribute. When a participant opens the link, the interview saves the values the tool filled in. See [Pass participant data in the link](/guides/customize-metadata) for how metadata works.

Each tool's section has a link to copy. Replace `https://your-org.pillow.so/your-study-code` with your live link, and the attribute names with yours. Whichever tool you use:

* **Encode each value.** A value that contains `&`, `#`, or a space breaks the link unless it's encoded. Each tool's section says how: most tools have an encoding filter, Intercom encodes values itself, and the tools without a filter need values that are safe in a link.
* **Give each value a fallback where the tool supports one.** Without one, a user who lacks the attribute gets an empty value, which the interview saves empty, or, in some tools, doesn't get the message at all. A fallback such as `unknown` gives you a value you can filter on.
* **Set `meta_source` to the tool's name.** You can then filter interviews by the tool that sent them.
* **Know where the link opens.** A participant who returns to the link in the same browser within 30 days resumes their interview. When a push notification or in-app message opens the link inside an app, a later visit from their usual browser starts a new interview.
* **Stop sending the link when the study ends.** New visitors then see that the study is closed. See [End a study](/guides/end-study).

Tools can add their own tracking parameters to links, such as `utm_source`. Pillow saves only `meta_` parameters, so these don't affect the interview.

## Messaging platforms

<AccordionGroup>
  <Accordion title="Braze" id="braze">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=braze&meta_user_id={{${user_id} | default: 'unknown' | url_encode}}&meta_plan={{custom_attribute.${plan} | default: 'unknown' | url_encode}}
    ```

    * **Where**: in an email, push, or in-app message of an action-based campaign, or a Canvas with action-based entry, triggered by your event.
    * **Send once**: campaigns send to each user once unless you turn on re-eligibility. In a Canvas, leave **Allow users to re-enter this Canvas** off.
    * **Push and in-app messages**: with **Open Web URL Inside App** on, the link opens inside your app. With it off, the link opens in the participant's browser.
  </Accordion>

  <Accordion title="Customer.io" id="customer-io">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=customerio&meta_user_id={{ customer.id | default: 'unknown' | url_encode }}&meta_plan={{ customer.plan | default: 'unknown' | url_encode }}
    ```

    * **Where**: in a message of an automation triggered by **Event** or by **Attribute or Segment**. Keep the fallbacks in single quotes: double quotes inside a link break it.
    * **Send once**: event-triggered automations run every time the event happens. Set the frequency to **One time**.
  </Accordion>

  <Accordion title="Iterable" id="iterable">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=iterable&meta_user_id={{#urlEncode}}{{{defaultIfEmpty userId 'unknown'}}}{{/urlEncode}}&meta_plan={{#urlEncode}}{{{defaultIfEmpty plan 'unknown'}}}{{/urlEncode}}
    ```

    * **Where**: in a message of a journey whose Start tile uses **Event occurs**. Keep the triple braces and the single quotes: they stop Iterable from changing the values before encoding them.
    * **Send once**: the Start tile's **Maximum entries** defaults to unlimited. Set it to 1 before you publish the journey.
  </Accordion>

  <Accordion title="Klaviyo" id="klaviyo">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=klaviyo&meta_user_id={{ person.id|default:'unknown'|urlencode:'' }}&meta_plan={{ person|lookup:'plan'|default:'unknown'|urlencode:'' }}
    ```

    * **Where**: in a message of a flow triggered by a metric, such as **Started Checkout**. `person.id` is your own ID for the profile.
    * **Send once**: metric-triggered flows allow re-entry by default. Set the flow's re-entry criteria to **No re-entry**.
  </Accordion>

  <Accordion title="HubSpot" id="hubspot">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=hubspot&meta_user_id={{contact.user_id}}&meta_plan={{contact.plan}}
    ```

    * **Where**: in a marketing email sent by a workflow with the enrollment trigger **When an event occurs**. Type each token into the link URL with its contact property's internal name, and pass only values without spaces, `&`, or `#`, such as IDs and plan names.
    * **Fallback**: set a global default value for each token in **Settings** > **Marketing** > **Email** > **Personalization** > **Edit defaults**.
    * **Send once**: workflows enroll each contact once unless you turn on re-enrollment.
  </Accordion>

  <Accordion title="Intercom" id="intercom">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=intercom&meta_user_id=<User ID attribute>&meta_plan=<plan attribute>
    ```

    * **Where**: in an outbound message with an event rule, or a Series. Insert each attribute into the link with the attribute picker and set its fallback there. Intercom encodes the values, so don't encode them yourself.
    * **Send once**: a message with an event rule can send every time the event happens, so set its maximum number of sends to 1. A Series lets each user enter once unless you allow re-entry.
  </Accordion>

  <Accordion title="Mailchimp" id="mailchimp">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=mailchimp&meta_user_id=*|URL:USERID|*&meta_plan=*|URL:PLAN|*
    ```

    * **Where**: in an email of a flow that starts on **Tag added**, **Audience field changes**, or **Event API**. `USERID` and `PLAN` stand for the merge tags of your audience fields.
    * **Fallback**: set a **Default merge tag value** on each audience field.
    * **Send once**: make sure **Contacts can re-enter flow** is off.
  </Accordion>
</AccordionGroup>

## In-app guides

An in-app guide puts the link in a button that participants see while they use your product. The link opens in a new browser tab. Pass only values without spaces, `&`, or `#`, such as IDs and plan names.

<AccordionGroup>
  <Accordion title="Appcues" id="appcues">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=appcues&meta_user_id={{userId}}&meta_plan={{ plan | "unknown" }}
    ```

    * **Where**: give a button in your flow the **Go to URL** action and turn on **Open in a new window**. Type each property name exactly as Appcues shows it, with the same capitalization.
    * **Send once**: set the flow's frequency to **Show once**.
  </Accordion>

  <Accordion title="Pendo" id="pendo">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
    https://your-org.pillow.so/your-study-code?meta_source=pendo&meta_user_id={visitor.id/}&meta_plan={account.plan|unknown/}
    ```

    * **Where**: in a web guide, set a button's action to **URL Link** and add **Dismiss Guide** as its second action, so the guide closes after the click.
    * **Send once**: set the guide's activation to **Automatically**. It shows until the visitor completes or dismisses it, unless you turn on **Repeat guide display**.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Participant metadata" icon="table" href="/reference/participant-metadata">
    Limits on keys, values, and the number of parameters.
  </Card>

  <Card title="Interviews" icon="messages-square" href="/concepts/interviews">
    How an interview runs and what it records.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.