Embeddable Elements
Embedded elements can be quickly inserted into your webpage or web app. They allow your users to view their referral links without having to sign in as an extra step.
Last updated
Embedded elements can be quickly inserted into your webpage or web app. They allow your users to view their referral links without having to sign in as an extra step.
Last updated
Embeddable elements are one-line-of-code inline block elements that you can insert into your web app for a whitelabel referral portal experience for your signed-in users.
Embeddable elements can be inserted into any webpage and can be customized using HTML data attributes.
Want to change basic styles? Login to GrowSurf and navigate to Edit Campaign > 2. Design > Theme. Or use data attributes to apply style overrides.
Embeddable elements have two UI states that display differently to New Visitors ("no auth" state) and to Participants ("auth" state)
Important Notes:
You must have the GrowSurf Universal Code installed within the same webpage that you are using embeddable elements on.
If you see the "no auth" state when you are expecting to see the "auth" state, it may be because participant authentication is enabled for your campaign and there may not be a saved cookie already on the participant's browser. Please see this article for more details.
If you don't see styles applied to embedded elements, please check your browser developer console for errors/warnings. Data attributes must be parsable by the JSON.parse()
function.
Although embedded elements listen for changes in data attributes and update dynamically, if you run into issues where the embedded elements do not render/refresh, you can force re-rendering. This may be useful if you are working with dynamic data (such as as setting data-grsf-email
to the user's email in the Embedded Form).
To force re-rendering, call growsurf.initElements()
, which destroys all embeddable elements in the DOM and forces GrowSurf to re-render them.
Please make sure to wait for the GrowSurf Universal Code to load by using the grsfReady
event listener. See an example here.
For single-page applications (SPAs), there may be issues with embeddable elements rendering on the page due to how URL routes are handled. In this case, calling growsurf.initElements()
may not work and you will need to call growsurf.init()
to re-initialize GrowSurf to make the embeddable elements render.
The embedded form is an element that has two different UI states.
For new visitors, the signup form is shown (this is the "no auth" state).
For participants, their unique referral link with share buttons are displayed (this is the "auth" state).
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded invite is an element that lets a participant send a bulk email invite to their friends/family.
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded button is an element that opens up the GrowSurf window when clicked.
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded leaderboard is an element that has two different UI states.
For new visitors, the leaderboard is displayed (this is the "no auth" state).
For participants, the leaderboard is displayed with their row highlighted (this is the "auth" state).
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded rewards is an element that has two different UI states.
For new visitors, the campaign rewards are displayed (this is the "no auth" state).
For participants, the campaign rewards are displayed with the participant's progress being displayed next to each one (this is the "auth" state).
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded stats is an element that displays a participant's referral statistics and rank.
The referral count text ("X referrals made") will only be displayed if you have at least one non-Leaderboard-type reward
The rank text ("#X your rank") will only be displayed if you have at least one Leaderboard-type reward
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded next milestone is an element that displays how many referrals a participant needs to make to unlock the next/upcoming milestone reward (only applies to milestone rewards).
In the Campaign Editor, make sure to update your milestone reward's advanced settings to set the Next Milestone prefix and suffix values (see image).
If the participant has reached all milestones, then nothing will be rendered
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
The embedded referral status lets a participant view the individual progress of their referrals and email invitees.
For email invitees, if they have not yet signed up, their email address will display as obfuscated
Example usage:
This is the bare minimum code required to display this element.
Data attributes:
HTML Attribute
Data Type
Description
data-grsf-block-form
N/A
(Required) This attribute turns any HTML element into an embedded form.
data-grsf-email
String
(Optional) If provided with a valid email address, a new participant will be created, or an existing participant will be returned — and their unique referral link and social share buttons will be displayed.
data-grsf-first-name
String
(Optional) If provided with data-grsf-email
, then this value will be saved as the new participant's first name property.
If the participant already exists in the referral campaign, then this attribute will be ignored.
data-grsf-last-name
String
(Optional) If provided with data-grsf-email
, then this value will be saved as the new participant's last name property.
If the participant already exists in the referral campaign, then this attribute will be ignored.
data-grsf-metadata
Object
(Optional) If provided with data-grsf-email
, then this value will be saved as the new participant's metadata.
If the participant already exists in the referral campaign, then this attribute will be ignored.
data-grsf-gdpr-paragraph-style
Object
(Optional) Adds inline styles to the GDPR consent paragraph text (if GDPR enabled).
data-grsf-gdpr-checkbox-style
Object
(Optional) Adds inline styles to the GDPR consent checkbox text (if GDPR is enabled).
data-grsf-label-style
Object
(Optional) Adds inline styles to the form input labels.
data-grsf-button-style
Object
(Optional) Adds inline styles to any button elements.
data-grsf-link-style
Object
(Optional) Adds custom styles to any link elements.
data-grsf-field-*-label
String
(Optional) Sets the label text for the targeted input field.
Replace *
with one of the following options: email
, first-name
, last-name
, custom-field
.
Example: data-grsf-field-first-name-label
.
Custom fields are supported, so if you have an input field called "Phone Number", you would set data-grsf-field-phone-number-label
(make sure to follow kebab-case).
data-grsf-field-*-placeholder
String
(Optional) Sets the placeholder text for the targeted input field.
Replace *
with one of the following options: email
, first-name
, last-name
, custom-field
.
Example: data-grsf-field-first-name-placeholder
.
Custom fields are supported, so if you have an input field called "Phone Number", you would set data-grsf-field-phone-number-placeholder
(make sure to follow kebab-case).
data-grsf-*-button-style
Object
(Optional) Adds inline styles to the targeted social share button.
Replace *
with one of the following options: email
, facebook
, twitter
, threads
, pinterest
, linkedin
, sms
, messenger
, whatsapp
, wechat
, telegram
, reddit
, tumblr
.
Example: data-grsf-facebook-button-style
.
data-grsf-*-button-text
String
(Optional) Sets the text of the targeted social share button.
Replace *
with one of the following options: email
, facebook
, twitter
, threads
pinterest
, linkedin
, sms
, messenger
, whatsapp
, wechat
, telegram
, reddit
, tumblr
.
Example: data-grsf-facebook-button-text
.
data-grsf-*-button-message
String
(Optional) Sets the pre-populated message of the targeted social share button.
Replace *
with one of the following options: email
, facebook
, twitter
, pinterest
, sms
, whatsapp
, reddit
, tumblr
.
Example: data-grsf-facebook-button-message
.
Include {{shareUrl}}
to dynamically set the participant's Share URL within the pre-populated message.
To change the subject line for email messages, set data-grsf-email-button-subject
.
data-grsf-share-instructions
String
(Optional) Sets the text of the share instructions (these instructions are only visible when the participant is in the auth state).
data-grsf-share-instructions-style
Object
(Optional) Adds inline styles to the share instructions.
data-grsf-copy-link-button-text
String
(Optional) Sets the text of the 'Copy Link' button.
data-grsf-copy-link-container
Object
(Optional) Adds inline styles to the container of the input box and Copy Link button.
data-grsf-redirect-url
String
(Optional) Redirects to the given URL upon form submission
HTML Attribute
Data Type
Description
data-grsf-block-invite
N/A
(Required) This attribute turns any HTML element into an embedded invite.
data-grsf-email
String
(Optional) The email of the participant to display the invite element for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-instructions-text
String
(Optional) Sets the text of the invite instructions.
data-grsf-instructions-style
Object
(Optional) Adds inline styles to the invite instructions.
data-grsf-label-style
Object
(Optional) Adds inline styles to the form input labels.
data-grsf-input-placeholder-text
String
(Optional) Sets the placeholder text of the email address input field.
data-grsf-preview-link-text
String
(Optional) Sets the text of the preview link. If no value is provided, the button text will default to the GrowSurf window invite preview link text.
data-grsf-preview-subject-label
String
(Optional) Sets the label text for the email subject line in the preview section.
data-grsf-preview-subject-placeholder
String
(Optional) Sets the placeholder text for the email subject line in the preview section.
data-grsf-preview-subject
String
(Optional) Sets the pre-populated value for the email subject line in the preview section.
data-grsf-preview-message-label
String
(Optional) Sets the label text for the email message body in the preview section.
data-grsf-preview-message-placeholder
String
(Optional) Sets the placeholder text for the email message body in the preview section.
data-grsf-preview-message
String
(Optional) Sets the pre-populated value for the email message body in the preview section.
Include {{shareUrl}}
to dynamically set the participant's Share URL within the pre-populated message.
data-grsf-link-style
Object
(Optional) Adds inline styles to any link elements. If no value is provided, the link styles will inherit from the GrowSurf window link styles.
data-grsf-submit-button-text
String
(Optional) Sets the text of the submit button. If no value is provided, the button text will default to the GrowSurf window invite submit button text.
data-grsf-button-style
Object
(Optional) Adds inline styles to any button elements. If no value is provided, the button styles will inherit from the GrowSurf window button styles.
data-grsf-contact-pill-style
Object
(Optional) Adds custom styles to the contact pills, which appear underneath the email address input field when email addresses have been entered. If no value is provided, the button styles will inherit from the GrowSurf window contact pill styles.
data-grsf-*-button-style
Object
(Optional) Adds inline styles to the targeted address book button. If no value is provided, the button styles will inherit from the GrowSurf window button styles.
Replace *
with one of the following options: google
.
Example: data-grsf-google-button-style
.
data-grsf-*-button-text
String
(Optional) Sets the text of the targeted address book button. If no value is provided, the button text will default to the GrowSurf window invite Google Contacts button text.
Replace *
with one of the following options: google
.
Example: data-grsf-google-button-text
.
data-grsf-contact-picker-search-text
String
(Optional) Sets the "Search" text in the contact picker.
data-grsf-contact-picker-suggestions-text
String
(Optional) Sets the "Suggestions" text in the contact picker.
data-grsf-contact-picker-results-text
String
(Optional) Sets the "Results" text in the contact picker.
data-grsf-contact-picker-load-more-button-text
String
(Optional) Sets the "Load More" button text in the contact picker.
HTML Attribute
Data Type
Description
data-grsf-block-button
N/A
(Required) This attribute turns any HTML element into an embedded button.
data-grsf-email
String
(Optional) The email of the participant to display the button element for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-button-text
String
(Optional) Sets the text of the embedded button. If no value is provided, the button text will default to the GrowSurf window signup form button text.
data-grsf-button-style
Object
(Optional) Adds inline styles to the button. If no value is provided, the button styles will inherit from the GrowSurf window button styles.
HTML Attribute
Data Type
Description
data-grsf-block-leaderboard
N/A
(Required) This attribute turns any HTML element into an embedded leaderboard.
data-grsf-email
String
(Optional) The email of the participant to display the leaderboard element for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-button-style
Object
(Optional) Adds inline styles to any buttons within the leaderboard.
data-grsf-link-style
Object
(Optional) Adds custom styles to any link elements within the embedded leaderboard.
data-grsf-leaderboard-title
String
(Optional) Sets the text of the title above the leaderboard.
data-grsf-leaderboard-title-style
Object
(Optional) Adds inline styles to the text of the title above the leaderboard.
data-grsf-rank-column-text
String
(Optional) Sets the text of the rank column header.
data-grsf-participants-column-text
String
(Optional) Sets the text of the participants column header.
data-grsf-winners-icon-style
Object
(Optional) Adds inline styles to the winner icon that is displayed next to the winner.
data-grsf-header-style
Object
(Optional) Adds inline styles to the header that is displayed above the leaderboard list.
data-grsf-list-item-style
Object
(Optional) Adds inline styles to the list items that are displayed within the leaderboard list.
HTML Attribute
Data Type
Description
data-grsf-block-rewards
N/A
(Required) This attribute turns any HTML element into embedded rewards.
data-grsf-email
String
(Optional) The email of the participant to display the rewards element for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-card-style
Object
(Optional) Adds custom styles to the reward card(s).
data-grsf-title-style
Object
(Optional) Adds custom styles to the reward title.
data-grsf-horizontal
Boolean
(Optional) Displays the rewards in a horizontal format.
data-grsf-horizontal-scroll
Boolean
(Optional) If data-grsf-horizontal
is set to true
, this property will display rewards in a single scrollable row.
data-grsf-required-referrals-text
String
(Optional) Sets the "required referrals" text. This is the text that is used to indicate the number of referrals a participant must make in order to earn the reward.
NOTE
This element only displays for non-Leaderboard reward types.
data-grsf-required-referrals-style
Object
(Optional) Adds custom inline styling to the "required referrals" tag displayed for non Leaderboard reward types. This is the element within the reward that is used to indicate the number of referrals a participant must make in order to earn the reward.
data-grsf-top-referrers-text
String
(Optional) Updates the "top referrers" text displayed for Leaderboard reward types. This is the text that is used to indicate the reward goal for Leaderboard type rewards.
NOTE
This element only displays for Leaderboard reward types
data-grsf-top-referrers-style
Object
(Optional) Adds custom styling to the "top referrers" tag. This is the element within the Leaderboard reward that is used to indicate the rank threshold the participant must reach in order to earn the reward.
data-grsf-reward-limit-text
String
(Optional) Updates the "max per referrer" text displayed within the reward.
data-grsf-reward-monthly-limit-text
String
(Optional) Updates the "per month" text displayed within the reward.
data-grsf-reward-limit-style
String
(Optional) Adds inline styling for the "max per referrer" text and/or "per month" text displayed within the reward.
data-grsf-progress-icon-style
Object
(Optional) Updates the inline styling of the progress icon style used to display the progress the participant has made in order to achieve the reward goal.
NOTE
Only background-color
, color
, and display
style properties are currently supported.
data-grsf-max-progress-icons
Number
(Optional) Updates the max number of progress icons to display.
data-grsf-footer-style
String
(Optional) Adds inline styles to the footer text messages (e.g, "manual approval" footer text, "max rewards shown" footer text).
HTML Attribute
Data Type
Description
data-grsf-block-stats
N/A
(Required) This attribute turns any HTML element into embedded stats
data-grsf-email
String
(Optional) The email of the participant to display stats for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-referral-count-style
Object
(Optional) Adds inline styling to the element that displays the participant's referral count.
data-grsf-referral-count-text
String
(Optional) Sets the text that is used to label the participant's referral count.
data-grsf-rank-style
Object
(Optional) Adds inline styling to the element that displays the participant's rank.
data-grsf-rank-text
String
(Optional) Sets the text that labels the participant's rank.
HTML Attribute
Data Type
Description
data-grsf-block-stats
N/A
(Required) This attribute turns any HTML element into an embedded next milestone
data-grsf-milestones
Array<Object>
(Optional) Set this attribute if you want to override your campaign's milestone rewards so that you can define your own milestone rewards as an Array. Each Object should follow this format:
goal
(Number) = The number of referrals needed to unlock the milestone reward
prefix
(Text) = The text displayed before the goal
suffix
(Text) = The text displayed after the goal
monthly
(Boolean) = Set to true
to use the participant's monthly referral count (i.e, if the milestone reward resets every month)
The following is an example Object:
{
'goal': 2,
'prefix': 'You are only ',
'suffix': ' referrals away from winning a free shirt!',
'monthly': false
}
data-grsf-email
String
(Optional) The email of the participant to display their next milestone reward to. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-only-show-number
Boolean
(Optional) If set to true
, then only the participant's remaining referrals will be displayed as a number (the prefix and suffix values will be removed)
HTML Attribute
Data Type
Description
data-grsf-block-referral-status
N/A
(Required) This attribute turns any HTML element into an embedded referral status element.
data-grsf-email
String
(Optional) The email of the participant to display the referral status element for. If the participant does not yet exist within the campaign, they will be newly added.
data-grsf-button-style
Object
(Optional) Adds inline styles to any buttons within the referral status element.
data-grsf-link-style
Object
(Optional) Adds custom styles to any link elements within the embedded referral status element.
data-grsf-referral-status-title
String
(Optional) Sets the text of the title above the referral status list.
data-grsf-referral-status-title-style
Object
(Optional) Adds inline styles to the text of the title above the referral status list.
data-grsf-status-column-text
String
(Optional) Sets the text of the Status column header.
data-grsf-your-referral-column-text
String
(Optional) Sets the text of the Your Referral column header.
data-grsf-header-style
Object
(Optional) Adds inline styles to the header that is displayed above the referrals list.
data-grsf-list-item-style
Object
(Optional) Adds inline styles to the list items that are displayed within the referrals list.