docs

Website surveys

Embed forms and launch surveys when visitors interact with your website.

Engage in Studio connects a survey form to a website campaign. Use an existing survey or create one from a template. Each campaign controls its placement, trigger, pages, audience, and frequency without changing the form's questions.

Set up a campaign

Open Engage → New campaign, choose an active survey, and select a placement:

  • Inline embed puts the survey in a container on your page.
  • Feedback button lets visitors open the survey themselves.
  • Popup survey opens after time on page, a scroll percentage, or a custom event.

Add exact website origins, such as https://example.com. Include https://www.example.com separately if you use both. Set the page path to /*, /pricing, or /checkout/*. Choose all devices, desktop, or mobile, and a percentage of eligible visits.

Preview answers are never saved. Save a draft or publish the campaign, then open Installation and copy its snippet. Installation is detected when a published campaign is requested from an allowed origin on a matching page.

Install on your website

Replace CAMPAIGN_ID with the identifier in your installation snippet:

<script defer src="https://noonmark.dev/engage.js" data-campaign="CAMPAIGN_ID"></script>

For an inline survey, also add this container where the questions should appear:

<div data-noonmark-embed="CAMPAIGN_ID"></div>

Install each campaign snippet only once per page. If you have a Content Security Policy, allow the Noonmark origin in script-src, connect-src, and frame-src. Campaign frames allow only the website origins you configured.

Custom events

After the snippet loads, signal an action from your website:

window.NoonmarkEngage?.event("checkout_completed");

The name must match the campaign's custom event. Events are used locally to decide when to open the survey; this is not a general website analytics tracker. For apps that change routes without loading a new page, the snippet checks the page path every second and resets its triggers when the path changes.

By default, eligibility and frequency are remembered in session storage. Automatic surveys are shown once in that tab's session; completed campaigns stay suppressed for that session. Feedback buttons can be reopened until the survey is completed. Only one popup is open at a time.

Remember visitors across sessions uses local storage. That campaign remains hidden until your website signals consent for persistent storage:

window.NoonmarkEngage?.consent(true);

If your consent manager runs before the snippet, set window.NoonmarkEngageConsent = true when consent is granted. Signal consent(false) when it is withdrawn: an open campaign closes and its persistent frequency values are removed. A configured cooldown applies after the survey is displayed or dismissed; a completed survey stays suppressed while its stored completion marker remains.

If browser storage is unavailable, the snippet uses memory for the loaded page; frequency cannot persist after a page reload.

Responses and results

The Results tab shows the latest campaign responses and the page where each was collected. Query strings and fragments are excluded from page context. Responses use the same field validation, bot protection, inbox, exports, and configured integrations as the original form. Campaign displays and responses are counted once per survey visit, including when a request is retried.

Pause a campaign to stop new displays and submissions. Moving its form to another workspace also moves and pauses the campaign so its new workspace can review website settings before publishing again.

What did you think of this content?

On this page