Personalisation: Dynamic content, merge fields, and more


📺 For more video content, check out More Personalisation: Query StringsMore Personalisation: Conditional Logic StatementsMore Personalisation: CSS & Class Attribution. More otherwise continue reading the guide below...


Creating a personalised on-site experience for your donors and fundraisers can result in deeper engagement and greater retention. This is because we desire to seen as an individual rather than just in the collective mass. So how do you achieve this in Raisely and how far can you take it? This is what we can explore… 

Skip Ahead To


How Personalisation Works

Personalisation refers to presenting your content and design in a manner that recognises the individual viewing your site, rather than the collective mass. Typically, a web page contains static content, aimed at and presented for everyone. A personalised page though, contains dynamic (changing) content based on the person who is viewing it.
This dynamic content finds its source in the data you store. For example, if you have the first name of people in the Raisely Supporter Management Tool (your database), then you can use this data (their first name) as dynamic content. Or if you have captured a particular preference people have, say, what fundraising activity they want to do, you can use this as dynamic content.

Where is this data stored? 

There are three data sources you can use: Raisely’s Supporter Management Tool (People) or for campaign pages, the Campaign’s database containing non-people data, and the URL. Data can be stored in these three places for you to use for personalisation. To see all the default data that Raisely stores in the Supporter Management Tool and the Campaign database, check out the Merge Fields - Cheat Sheet.

Data brought in by the URL is common when working with email or social media campaigns. This is because you can place a query string that holds data in the link that directs people to the Campaigns page. It can look something like this: 

https://raisely.com?utm_campaign=newsletter&utm_source=email

Adding Dynamic Content

In Raisely, you can use merge fields to display dynamic content. By simply typing # in any text editor, you can bring up a list of all available default merge fields.

To pull in custom data, created using Raisely’s custom fields, you simply place the custom fields ID in surrounding curly braces {{fieldID}}.

To pull in custom data created using Raisely’s custom fields, place the field ID inside double curly braces: {{fieldID}}.

Using Session & URL Data

There are now two ways to pull dynamic data into your pages and messages, depending on the type of information:

  • Personal Data (Secure): To display a donor's name or email, use the user. prefix. This pulls data from a secure, 48-hour session created when a donor clicks a link in a Raisely email.
    • Example: {{user.firstName}}
  • Tracking & Public Data (URL Queries): To pull in non-personal data found in the site's URL (like tracking codes or donation amounts), use the query. prefix.
    • Example: {{query.utm_campaign}} or {{query.amount}}

Where can you personalise?

In Raisely, you can personalise:

  • Any Campaign Page: Greet returning donors or show specific content blocks.
  • Any Message Content: Tailor your automated emails and SMS.

The most common use for personalisation is inserting a supporter's first name. By using {{user.firstName}}, you ensure the donor's experience is seamless and their data remains protected. For more advanced setups, you can use conditional logic (if/else) to change entire design elements based on who is viewing the page.


Caring for Your Data

The first rule of personalization is simple: you can only use the data you have. If you’ve captured it in a custom field or a standard profile field, you can use it to tailor the donor experience.

However, great personalization requires high-quality data. For example, if you want your Appeal Campaign to greet a donor by name using {{user.firstName}}, but that donor’s name is recorded as "Aardvark," that is exactly what they will see.

To ensure your campaigns look professional and personal, keep these three principles in mind:

  1. Clean Your Data: Before launching a large email appeal, scan your contact list for typos, placeholder names, or missing fields. Working in smaller batches can help you spot these issues before they go live.
  2. Plan for the "Unknown": Always create a fallback for when data is missing. Using Conditional Logic (if/else) ensures that if a donor’s name isn't in your system, they see a friendly "Hi there!" instead of a blank space or an error.
  3. Use the Right Tool for the Job: Following our SOC 2 security updates, remember that personal data (Name/Email) must be pulled via the user. prefix from a secure session. Using the old URL-based query. method for personal info will no longer work and could leave your donor's data exposed.

Personalisation is a powerful time-saver and conversion booster—but it only works as well as the data behind it. Spend time auditing your records to ensure your donors feel truly seen, not just "processed."


The Rules

There are a couple of rules to understand before diving into using dynamic content. 

Quick Way

Type  # into a heading/paragraph block to display and search for all different merge fields available. This is the simplest method. Raisely only displays 10 fields in the search dropdown. To find the names of all the fields available, check out the  Merge Fields - Cheat Sheet.

Manual Way - From Database

Every data field in your database, from 'first name' to 'campaign totals', has both a source and a unique field ID. These can be found in Organisation > Custom Fields or refer to the Data Fields Explained guide. To pull data from these fields into content, you use a format like this:
{{source.fieldID}}
For example, to insert a user's first name you’d type {{user.firstName}} OR to insert a donors first name you’d type {{donation.firstName}}
IMPORTANT: If the field is a custom field you have created, you need to tell the merge field whether it is a private or public field. This is seen in the custom fields settings. Therefore, the merge field would be {{source.private.fieldID}} OR {{source.public.fieldID}}

Manual Way - From URL query string

A Query String is a snippet of text added to the end of a URL to pass specific, non-sensitive information to a page. It is made up of a key and a value, separated by an equals sign:

https://yourcampaign.com/?key=value

To display this data on your page or use it in a form, use the query. prefix: {{query.key}}

When to Use This (Non-Personal Data)

Query strings are perfect for tracking campaign sources or setting donation defaults.

  • Tracking Example: https://raisely.com?utm_campaign=summer_appeal
    • Use {{query.utm_campaign}} to track the source.
  • Donation Example: https://raisely.com?amount=50
    • Use {{query.amount}} to pre-set a donation amount on your form.
⚠️ Important: Personal Data Restrictions 

Following our April 7th security update, you can no longer pass personal data (like firstName or email) via a manual URL query string.

→  Don’t use: ?firstName=James with {{query.firstName}} 
→ Do use: The Access Token method. When a donor clicks a link from a Raisely email, their name and email are securely loaded into the user. object (e.g., {{user.firstName}}) via a private session. This keeps donor data out of the URL bar and browser history.

Reference Points

For query. fields to work, the data must be present in the URL the user is currently visiting. For user. fields to work, the donor must have arrived via a valid Magic Link or Access Token link that was generated within the last 48 hours.


Simple Examples

Below are a few common examples of simple personalisation. These should enable you to explore others similar.

### accordion

## expand

# Inserting a person's first name in a greeting on the home page

To greet a user by name on a landing page, ensure they arrive via a link from a Raisely email (which automatically includes an access token). Instead of query.firstName, use user.firstName. This pulls the data from the donor's secure session rather than the URL bar.

Then, in your heading/paragraph block, type #first and select "User First name".

## expand

## expand

# Pre-fill a form using URL data

Your donation, signup, and lead forms can automatically pull in data to save your donors time. For security reasons, Raisely now distinguishes between Personal Information (which is handled securely via sessions) and General Data (which uses URL queries).

1. Pre-filling Personal Information (Name & Email)

Personal data is no longer pulled from the visible URL. Instead, it is pulled from the donor's authenticated session using an Access Token.

1

Ensure your donors arrive at your page via a link from a Raisely Message. This automatically includes the necessary access_token.

2

From the Campaign sidebar, select Settings > Donation Form (or Signup/Lead Form).

3

Expand the fields for First Name, Last Name, or Email.

4
     In the Default Value box, enter the session-based merge fields such as {{user.firstName}}, {{user.lastName}}, and {{user.email}}.

2. Pre-filling Non-Personal Data (Amounts, Frequency, Tracking, etc)

For non-sensitive data, you can use a manual query string in your URL.

1

Plan your URL query (e.g., https://site.com?source=email).

2

In your form settings, expand the field that you wish to pre-fill (e.g. a custom source field).

3

In the Default Value box, enter the query-based merge field: {{query.key}}Example: If your URL has ?source=email, enter {{query.source}}.

## expand

## expand

# Adding in a date field

Say you have a custom field for Birthday on each persons individual fundraising profile page. To present this field in a neat way, simply add {{prettyDate current.profile.public.birthday}}. The 'prettyDate' prefix converts the date field to a more readable format. 

## expand

### accordion


Advanced Examples

Below are a few common examples of more advanced personalisation. These should enable you to explore others similar.

### accordion

## expand

# Adding conditional dynamic content

Here you are wishing to have content displayed based on certain values within your data fields. For example, if you were wanting to insert an encouragement for those who are yet to receive a donation on their fundraising profile, you can use conditions to show this message just for them and not for others.

A condition statement is simple:

{{#condition &  fieldID & value}} Insert your content which can also include {{merge fields}} in them.{{/condition}}

For example, to use the EQUAL condition, which looks to see if the value allocated matches the persons database field, the statement would be this:

{{#eq profile.total 0}}Getting off the starting blocks can be nerve-racking but we are here to cheer you on. Check out our resources below to help you raise your first dollar!{{/eq}}

IMPORTANT: If your value is not numeric, you need to enclose the value with single quotation marks (eg. 'value ')

To view all the available conditional statements you can use, check out the Advanced Conditions Cheat Sheet.

## expand

## expand

# Adding conditional dynamic content via PURLs (Personalised URLs)

You can use conditional statements to change the content of your page based on who is visiting or where they came from. This allows you to serve different messages to different segments of your audience using a single page.

1. Personal Greetings (Session-Based)

To greet a donor by name, Raisely now looks at the secure user session rather than the URL string. When a donor clicks a link from your Raisely emails, they are "remembered" for 48 hours.

Example Logic: If a donor is recognized, greet them personally. If they are an anonymous visitor, show a general welcome.

{{#if user.firstName}}Hey {{user.firstName}}, thanks for being a great supporter!{{else}}Thanks for being a great supporter of this campaign!{{/if}}

2. Segmented Messaging (Query-Based)

For non-personal data—like a donor "type" or a specific marketing "segment"—you can use manual query strings in your PURLs.

Example PURL: https://campaignsite.com/?donorType=regular

Example Logic: You can set up multiple versions of a link, each with a different donorType, to change the impact story a donor sees when they land on your home page:

{{#eq query.donorType 'regular'}} As a regular supporter, you help to ensure consistent funding for important programs. {{else eq query.donorType 'major'}} As a generous supporter, you help us shift the needle with making a real impact on these issues. {{else eq query.donorType 'xyz'}} As a xyz supporter, you help us ensure.....{{else}} Help us ensure that.... {{/eq}}

By combining User sessions for identity and Query strings for categorization, you can create a highly sophisticated, personalized journey for every supporter.

## expand

### accordion


Troubleshooting - Conditional Statements & Merge Fields

Applying conditional logic to merge fields is an advanced use of Raisely, and learning can result in times of trial and error. Here is a checklist to follow when your merge fields and conditional statements:

  • If your campaign page displays an error OR the message will not send, the most common reason is that there is a mistype in the statement. Be sure to check -
    • Is the statement missing a curly brace {{  }}
    • Is there a # preceding the condition (eg. {{#if... }})
    • Is the condition closed using a / (eg. {{... /if}}
  • If no data is populating, be sure to check -
    • Is there actually data for that field? Run a Report to view a known record (person, transaction, profile) to see if that data is coming through
    • If entering the merge field manually, be sure that non-numeric values are enclosed by single apostrophe marks (eg. {{#if {{transaction.firstName 'Henry'}}... )
    • Be sure that the data you are calling for aligns with the Message Audience or the Page being used. For example, if your message audience is Donors, you can only reference data related to a single donation. A helpful way to visualise this would be to run a donation report to view data fields related to the audience.
    • If pulling data from a custom field, be sure that the field's privacy setting is added (public/private). For example, {{#if {{donation.private.customField}}. You can check the privacy setting for the field in Organisation > Custom Fields.
    • If you are using conditional statements on a Profile or Team Profile Page, be sure to add current to the manual merge field. For example, {{#gt {{current.profile.goal 500}}... }}. This is so the field references the fundraisers profile path, so it knows where to find the data.

Common Questions

### accordion

## expand

# How can I create a link that automatically logs a user into their account?

You can add a query string to your URL that logs the user in using their unique  access token. Every People account has an access token, which can simply be found by running a People Report. To embed the access token in button link within Raisely's messages, use: "https://site.raisely.com/?accessToken={{user.accessToken}}"

## expand

## expand

# Why isn't my personalisation working?

If the user is visiting the page via a link that contains "?accessToken={{user.accessToken}}", remember that Magic Links/Access Tokens expire after 48 hours. If a donor clicks an old link, they will need to request a new one to see personalised content.

If a user manually types ?firstName=John in the URL, {{user.firstName}} will not work. It must come from a secure Raisely-generated token.

## expand

## expand

# Why can't I use personalised URLs with donor names and email addresses any longer?

To protect donor privacy and meet industry security standards, Raisely no longer displays personal information in URLs. This prevents names and emails from being saved in browser histories or captured by third-party analytics like Google Analytics. All personalisation now happens through secure, short-lived session tokens.

## expand

### accordion

Cannot find the support guide you are after? Head on over to our YouTube channel 📺 for more creative content to help you go further. You can even leave us comments, suggesting new content ideas 🤯


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