- The study is live and you have its live link. See Share your 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, addmeta_ 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 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
unknowngives you a value you can filter on. - Set
meta_sourceto 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.
utm_source. Pillow saves only meta_ parameters, so these don’t affect the interview.
Messaging platforms
Braze
Braze
- 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.
Customer.io
Customer.io
- 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.
Iterable
Iterable
- 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.
Klaviyo
Klaviyo
- Where: in a message of a flow triggered by a metric, such as Started Checkout.
person.idis 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.
HubSpot
HubSpot
- 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.
Intercom
Intercom
- 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.
Mailchimp
Mailchimp
- Where: in an email of a flow that starts on Tag added, Audience field changes, or Event API.
USERIDandPLANstand 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.
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.
Appcues
Appcues
- 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.
Pendo
Pendo
- 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.
Related
Participant metadata
Limits on keys, values, and the number of parameters.
Interviews
How an interview runs and what it records.