Sign-up forms
A sign-up form is made in the CRM, under Contacts › Sign-up forms. You paste one snippet into the site, and the form works at once. A visitor leaves an email address, ticks the consent box and, with double opt-in, confirms by mail. From then on they are on the form's list, a cohort in the CRM called Newsletter · <list>, with a marketing consent that records the exact wording they agreed to.
<div data-evx-form="frm_…"></div>
<script async src="https://api.evtx.nl/forms/v1/form.js"></script>
The snippet needs no write key: the form id is public, and the form only works on the sites set for it in the CRM. The widget draws into a shadow root, so the site's styles cannot break it, and it takes the site's font. The CRM's Install tab gives the snippet with the id filled in.
What is recorded
| When | Activity | With |
|---|---|---|
| The visitor signs up | subscribed_newsletter | the address, the list, and the browser's anonymous id when there is analytics consent (below) |
| They click the link in the confirmation mail | confirmed_subscription and granted_consent | the address, the clicking browser's anonymous id with analytics consent, the consent's purpose and channel (marketing, email), the box shown and ticked, the wording and its version |
| Without double opt-in, at the sign-up | granted_consent | as above |
The wording is versioned. A change in the CRM makes the next version, and a consent always carries the version its visitor saw (form_text_version, frm_…@3). With double opt-in, a sign-up that is not confirmed within 30 days is dropped and never becomes a consent.
The confirmation page
The link in the confirmation mail opens either a page we host or a page of your own site. For your own page, set its address on the form, then put the same snippet on that page. The widget reads ?evx_confirm=…, confirms, shows the confirmation in place of the form, and removes the parameter from the address bar. A page that should show only the confirmation can use <div data-evx-confirm></div> with the script.
Opening the link confirms nothing by itself. Mail scanners open every link in a mail, so the hosted page asks for a click, and your own page confirms from the widget's script, which scanners do not run.
Cookies and the cookie banner
The widget sets no cookie and stores nothing. Whether a sign-up is linked to the visitor's browser is decided by the SDK and the site's cookie banner:
- The SDK is on the page and the banner allowed analytics. The sign-up carries the SDK's anonymous id. This browser's earlier and later visits count towards the subscriber, as a claim until the confirmation; nothing about the subscriber is shown back to the browser.
- No analytics consent, or no SDK. The sign-up and the consent are recorded as usual, without a link to the browser. A newsletter consent is consent to receive mail, not to be tracked, so it never sets a cookie on its own.
- The confirmation is clicked on a page with the SDK and analytics consent. That browser gets a verified link, which is often the visitor's phone.
The remember-me box
A form can offer a second, unticked box: "Remember this browser". Ticking it is an analytics consent, and the widget hands it to the SDK as evx.consent({ analytics: true }). The SDK then sets its cookie, and the sign-up carries the id. It is offered only where the SDK is on the page, and only when you switch it on for the form.
Your cookie banner remains the record of cookie consent. Before switching the box on, check these:
- Your banner accepts consent given elsewhere on the page. Some consent managers keep their own record and would not know about the box. If yours does not, do not offer the box; the banner's own choice already reaches the SDK.
- A later "no" wins. The SDK follows the latest
consent()call, so when the banner declines analytics after the box was ticked, the SDK removes its cookie, as for any withdrawal. - The box only adds analytics. It does not change the visitor's choice about ads or personalisation.
- The box's wording is versioned like the consent box's. It must say plainly what ticking it allows.
Styling
The widget takes the site's font and text colour. Set these on the container to change the rest:
| Property | Default |
|---|---|
--evx-form-accent | #1f2937, the button |
--evx-form-accent-fg | #fff |
--evx-form-radius | 6px |
--evx-form-border | #c9ced6 |
--evx-form-gap | 10px |
--evx-form-width | 420px |
--evx-form-error | #b91c1c |
<div data-evx-form="frm_…" style="--evx-form-accent:#e4002b"></div>
Limits
The service accepts at most 20 sign-ups an hour from one address and sends at most 3 confirmation mails a day to one email address. It quietly drops a submission that a bot filled in, or that came faster than a person could type it.