Skip to main content

Form Builder

The Form Builder lets you create multiple loyalty signup forms, each with its own design, display style, trigger, and targeting. Every form tracks its own views, signups, and conversion rate, and stamps a tag onto each member who joins through it so you know exactly where every customer came from.

Go to Forms in the left sidebar to manage your forms.


Creating a form

Click Create form, give it a name (internal only — not shown to visitors), and you'll land on the form editor. Changes are saved with the Save changes button at the top right.


Design tab

Configure what the form looks, says, and collects.

SettingDescription
Form nameInternal label (e.g. "Homepage popup", "Exit intent — blog")
Member tagA short tag added to every member who signs up via this form (e.g. homepage-popup). Use it to filter and segment later.
HeadlineThe main title shown at the top of the form
DescriptionA short line of copy below the headline
Signup bonus pointsPoints awarded instantly when a new member joins. Set to 0 to disable.
Primary colorBrand color used for buttons, badges, and input focus rings
Side image / BackgroundAn optional image applied to the form. Left / Right panel — shown beside the form content (popup and slide-in styles only, hidden on mobile). Full background — fills the entire form card as a background with a dark overlay for readability. Upload a file directly or paste any public image URL.

Form fields

The email field is always included and always first. You can add, reorder, and remove custom fields below it:

  • Text — single-line free text
  • Textarea — multi-line text (e.g. a message)
  • Dropdown — single-select from a list of options you define
  • Phone — telephone input with tel autocomplete
  • Checkbox (consent) — a checkbox with a label, typically used for marketing consent or terms acceptance. You can optionally add a Link URL (e.g. your privacy policy) and Link text (e.g. "View terms") that appears as a clickable link next to the checkbox label.

Any field can be marked Required, which blocks form submission until it's filled in. For a required checkbox, the form won't submit unless the box is checked.


Display tab

Choose how the form appears on the page.

Display style

StyleBehavior
PopupSlides up with a darkened backdrop overlay
Slide-inSlides in from a corner with no backdrop (less intrusive)
InlineRenders directly inside a <div data-glc-embed> element you place on the page
Top BarA sticky banner at the top of the page with a "Join now" button that expands the full form

Position

For Popup and Slide-in styles, choose where on screen the form appears:

  • Bottom Right (default)
  • Bottom Left
  • Center — full centered modal

Behavior tab

Trigger — when to show the form

TriggerWhen it fires
Time on pageAfter the visitor has been on the page for N seconds
Exit intentWhen the visitor's mouse moves toward the top of the browser window (desktop only)
Scroll %After the visitor has scrolled a set percentage of the page
Manual onlyNever shown automatically — only opens via window.Glancito.open("form_key")

Frequency — how often to show it

OptionBehavior
Always showThe form can appear on every page load
Once per hourHidden for 1 hour after being seen
Once per 12 hoursHidden for 12 hours after being seen
Once per dayHidden for 24 hours after being seen
Once per 3 daysHidden for 72 hours after being seen
Once per weekHidden for 7 days after being seen
Never again after seenShown once ever (until localStorage is cleared)

Frequency state is stored in localStorage per form key — each form has its own counter, so a visitor can see a blog exit-intent form without it affecting the homepage popup.

Members who have already signed up are never shown any form again, regardless of the frequency setting.


Success screen & discount codes

After a member submits, a success screen appears inside the popup. Configure it under Behavior → Success screen:

SettingDescription
Success headlineLarge title (default: "You're in! 🎉")
Success messageSupporting copy below the headline
Discount offerSelect a Discount Offer — the code is displayed on the success screen
Send welcome emailEnabled when an offer is selected — sends the signup_welcome email with the code

The selected offer can be static (one code for all) or a unique pool (one code per member). Manage offers on the Discount Offers page.

:::note Deduplication When a form sends a welcome email, Glancito stamps the signup_welcome tag on the member. Journey steps configured with suppress_if_tag: signup_welcome will skip for that member, preventing a duplicate welcome email. See Discount Codes → Deduplication. :::


Performance metrics

The top of each form's editor shows live stats:

MetricWhat it counts
Total viewsTimes this form was shown to a visitor
Total signupsMembers who joined through this form
Conversion rateSignups ÷ Views

The Forms list page shows these stats at a glance across all forms.


Attribution & tags

When a member joins through a form:

  1. Their source form is recorded (source_form_id + source_type = "web_form").
  2. The form's tag is added to member.metadata_.tags (e.g. ["homepage-popup"]).

You can filter members by tag in Segments to target them in journeys or campaigns.


Install tab

Script tag (Popup, Slide-in, Top Bar)

Each form has its own form key (glc_form_xxx). Paste this snippet before the </body> tag on any page:

<script
src="https://app.glancito.com/glancito-embed.js"
data-form-key="glc_form_xxxx"
></script>

All display settings (style, position, trigger, frequency) are loaded automatically from your dashboard. No additional attributes needed.

You can place different forms on different pages by using each form's unique data-form-key.

Inline embed snippet

If you selected the Inline display style, place a <div data-glc-embed> where you want the form to appear:

<!-- Place this div where you want the form to appear -->
<div data-glc-embed></div>

<script
src="https://app.glancito.com/glancito-embed.js"
data-form-key="glc_form_xxxx"
></script>

All active forms load automatically when you enable the Glancito app embed — no script tags or form keys required:

  1. Open your Shopify admin → Online Store → Themes → Customize
  2. In the left sidebar, click App embeds
  3. Find Glancito Loyalty Launcher and toggle it on
  4. Check Enable signup form
  5. Click Save

The embed script fetches all your active forms by shop domain and injects each one. Style, trigger, position, and frequency for each form are controlled in the Glancito dashboard under Forms.

To control which forms appear on Shopify, toggle them Active or Inactive in the Forms list.

Shopify — Manual script tag

If you prefer to add a specific form manually, paste it into your theme's theme.liquid file before </body>:

<script
src="https://app.glancito.com/glancito-embed.js"
data-form-key="glc_form_xxxx"
></script>

Manual control

Open or close a specific form from your own JavaScript:

window.Glancito.open("glc_form_xxxx"); // show a specific form
window.Glancito.close("glc_form_xxxx"); // hide a specific form
window.Glancito.open(); // show the first loaded form

Example: open on button click

<button onclick="window.Glancito.open('glc_form_xxxx')">Join our loyalty program</button>

<script
src="https://app.glancito.com/glancito-embed.js"
data-form-key="glc_form_xxxx"
></script>

Set the trigger to Manual only in the Behavior tab so the form doesn't auto-appear.


REST API

Submit a signup

POST https://app.glancito.com/api/public/embed/join
Content-Type: application/json

{
"form_key": "glc_form_xxxx",
"email": "customer@example.com",
"custom_fields": {
"first_name": "Jane",
"referral_source": "Instagram"
}
}

Response:

{
"success": true,
"member_id": "uuid",
"is_new": true,
"points_awarded": 100,
"points_balance": 100,
"message": "Welcome! You've earned 100 points for joining."
}

If the email already exists, is_new is false and points_awarded is 0.

Look up a member's balance

GET https://app.glancito.com/api/public/embed/member
?key=glc_pub_xxxx
&email=customer@example.com

Response:

{
"found": true,
"points_balance": 250,
"points_name": "points",
"tier": "silver"
}

Load a single form config

GET https://app.glancito.com/api/public/embed/config?form_key=glc_form_xxxx

Returns the full form configuration including fields, display settings, trigger rules, and frequency settings.

Load all active forms for a store

GET https://app.glancito.com/api/public/embed/forms?shop=mystore.myshopify.com

Returns an array of all active form configs. This is what the Shopify Theme App Extension calls internally.

Record an analytics event

POST https://app.glancito.com/api/public/embed/analytics/event
Content-Type: application/json

{
"form_key": "glc_form_xxxx",
"event_type": "view",
"session_id": "optional-session-id"
}

event_type is "view" or "submit". The embed script calls this automatically — you only need it if you're building a custom integration.